﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT License.
// See the LICENSE file in the project root for more information.

//
// Revision history:
//
//   BD - 04/05/2016 - Created fast JSON deserializer functionality.
//

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Nuqleon.Json.Serialization;
using System;
using System.Numerics;

namespace Tests
{
    partial class DeserializerTests
    {
        [TestMethod]
        public void FastDeserializer_SByte()
        {
            AssertDeserialize(new Asserts<SByte>
            {
                { SByte.MinValue.ToString(), (SByte)SByte.MinValue },
                { SByte.MaxValue.ToString(), (SByte)SByte.MaxValue },
                { ((SByte)(SByte.MinValue + 1)).ToString(), (SByte)(SByte.MinValue + 1) },
                { ((SByte)(SByte.MaxValue - 1)).ToString(), (SByte)(SByte.MaxValue - 1) },
                { "-128", (SByte)(-128) },
                { "-127", (SByte)(-127) },
                { "-126", (SByte)(-126) },
                { "-125", (SByte)(-125) },
                { "-124", (SByte)(-124) },
                { "-123", (SByte)(-123) },
                { "-122", (SByte)(-122) },
                { "-121", (SByte)(-121) },
                { "-120", (SByte)(-120) },
                { "-119", (SByte)(-119) },
                { "-118", (SByte)(-118) },
                { "-117", (SByte)(-117) },
                { "-116", (SByte)(-116) },
                { "-115", (SByte)(-115) },
                { "-114", (SByte)(-114) },
                { "-113", (SByte)(-113) },
                { "-112", (SByte)(-112) },
                { "-111", (SByte)(-111) },
                { "-110", (SByte)(-110) },
                { "-109", (SByte)(-109) },
                { "-108", (SByte)(-108) },
                { "-107", (SByte)(-107) },
                { "-106", (SByte)(-106) },
                { "-105", (SByte)(-105) },
                { "-104", (SByte)(-104) },
                { "-103", (SByte)(-103) },
                { "-102", (SByte)(-102) },
                { "-101", (SByte)(-101) },
                { "-100", (SByte)(-100) },
                { "-99", (SByte)(-99) },
                { "-98", (SByte)(-98) },
                { "-97", (SByte)(-97) },
                { "-96", (SByte)(-96) },
                { "-95", (SByte)(-95) },
                { "-94", (SByte)(-94) },
                { "-93", (SByte)(-93) },
                { "-92", (SByte)(-92) },
                { "-91", (SByte)(-91) },
                { "-90", (SByte)(-90) },
                { "-89", (SByte)(-89) },
                { "-88", (SByte)(-88) },
                { "-87", (SByte)(-87) },
                { "-86", (SByte)(-86) },
                { "-85", (SByte)(-85) },
                { "-84", (SByte)(-84) },
                { "-83", (SByte)(-83) },
                { "-82", (SByte)(-82) },
                { "-81", (SByte)(-81) },
                { "-80", (SByte)(-80) },
                { "-79", (SByte)(-79) },
                { "-78", (SByte)(-78) },
                { "-77", (SByte)(-77) },
                { "-76", (SByte)(-76) },
                { "-75", (SByte)(-75) },
                { "-74", (SByte)(-74) },
                { "-73", (SByte)(-73) },
                { "-72", (SByte)(-72) },
                { "-71", (SByte)(-71) },
                { "-70", (SByte)(-70) },
                { "-69", (SByte)(-69) },
                { "-68", (SByte)(-68) },
                { "-67", (SByte)(-67) },
                { "-66", (SByte)(-66) },
                { "-65", (SByte)(-65) },
                { "-64", (SByte)(-64) },
                { "-63", (SByte)(-63) },
                { "-62", (SByte)(-62) },
                { "-61", (SByte)(-61) },
                { "-60", (SByte)(-60) },
                { "-59", (SByte)(-59) },
                { "-58", (SByte)(-58) },
                { "-57", (SByte)(-57) },
                { "-56", (SByte)(-56) },
                { "-55", (SByte)(-55) },
                { "-54", (SByte)(-54) },
                { "-53", (SByte)(-53) },
                { "-52", (SByte)(-52) },
                { "-51", (SByte)(-51) },
                { "-50", (SByte)(-50) },
                { "-49", (SByte)(-49) },
                { "-48", (SByte)(-48) },
                { "-47", (SByte)(-47) },
                { "-46", (SByte)(-46) },
                { "-45", (SByte)(-45) },
                { "-44", (SByte)(-44) },
                { "-43", (SByte)(-43) },
                { "-42", (SByte)(-42) },
                { "-41", (SByte)(-41) },
                { "-40", (SByte)(-40) },
                { "-39", (SByte)(-39) },
                { "-38", (SByte)(-38) },
                { "-37", (SByte)(-37) },
                { "-36", (SByte)(-36) },
                { "-35", (SByte)(-35) },
                { "-34", (SByte)(-34) },
                { "-33", (SByte)(-33) },
                { "-32", (SByte)(-32) },
                { "-31", (SByte)(-31) },
                { "-30", (SByte)(-30) },
                { "-29", (SByte)(-29) },
                { "-28", (SByte)(-28) },
                { "-27", (SByte)(-27) },
                { "-26", (SByte)(-26) },
                { "-25", (SByte)(-25) },
                { "-24", (SByte)(-24) },
                { "-23", (SByte)(-23) },
                { "-22", (SByte)(-22) },
                { "-21", (SByte)(-21) },
                { "-20", (SByte)(-20) },
                { "-19", (SByte)(-19) },
                { "-18", (SByte)(-18) },
                { "-17", (SByte)(-17) },
                { "-16", (SByte)(-16) },
                { "-15", (SByte)(-15) },
                { "-14", (SByte)(-14) },
                { "-13", (SByte)(-13) },
                { "-12", (SByte)(-12) },
                { "-11", (SByte)(-11) },
                { "-10", (SByte)(-10) },
                { "-9", (SByte)(-9) },
                { "-8", (SByte)(-8) },
                { "-7", (SByte)(-7) },
                { "-6", (SByte)(-6) },
                { "-5", (SByte)(-5) },
                { "-4", (SByte)(-4) },
                { "-3", (SByte)(-3) },
                { "-2", (SByte)(-2) },
                { "-1", (SByte)(-1) },
                { "0", (SByte)(0) },
                { "1", (SByte)(1) },
                { "2", (SByte)(2) },
                { "3", (SByte)(3) },
                { "4", (SByte)(4) },
                { "5", (SByte)(5) },
                { "6", (SByte)(6) },
                { "7", (SByte)(7) },
                { "8", (SByte)(8) },
                { "9", (SByte)(9) },
                { "10", (SByte)(10) },
                { "11", (SByte)(11) },
                { "12", (SByte)(12) },
                { "13", (SByte)(13) },
                { "14", (SByte)(14) },
                { "15", (SByte)(15) },
                { "16", (SByte)(16) },
                { "17", (SByte)(17) },
                { "18", (SByte)(18) },
                { "19", (SByte)(19) },
                { "20", (SByte)(20) },
                { "21", (SByte)(21) },
                { "22", (SByte)(22) },
                { "23", (SByte)(23) },
                { "24", (SByte)(24) },
                { "25", (SByte)(25) },
                { "26", (SByte)(26) },
                { "27", (SByte)(27) },
                { "28", (SByte)(28) },
                { "29", (SByte)(29) },
                { "30", (SByte)(30) },
                { "31", (SByte)(31) },
                { "32", (SByte)(32) },
                { "33", (SByte)(33) },
                { "34", (SByte)(34) },
                { "35", (SByte)(35) },
                { "36", (SByte)(36) },
                { "37", (SByte)(37) },
                { "38", (SByte)(38) },
                { "39", (SByte)(39) },
                { "40", (SByte)(40) },
                { "41", (SByte)(41) },
                { "42", (SByte)(42) },
                { "43", (SByte)(43) },
                { "44", (SByte)(44) },
                { "45", (SByte)(45) },
                { "46", (SByte)(46) },
                { "47", (SByte)(47) },
                { "48", (SByte)(48) },
                { "49", (SByte)(49) },
                { "50", (SByte)(50) },
                { "51", (SByte)(51) },
                { "52", (SByte)(52) },
                { "53", (SByte)(53) },
                { "54", (SByte)(54) },
                { "55", (SByte)(55) },
                { "56", (SByte)(56) },
                { "57", (SByte)(57) },
                { "58", (SByte)(58) },
                { "59", (SByte)(59) },
                { "60", (SByte)(60) },
                { "61", (SByte)(61) },
                { "62", (SByte)(62) },
                { "63", (SByte)(63) },
                { "64", (SByte)(64) },
                { "65", (SByte)(65) },
                { "66", (SByte)(66) },
                { "67", (SByte)(67) },
                { "68", (SByte)(68) },
                { "69", (SByte)(69) },
                { "70", (SByte)(70) },
                { "71", (SByte)(71) },
                { "72", (SByte)(72) },
                { "73", (SByte)(73) },
                { "74", (SByte)(74) },
                { "75", (SByte)(75) },
                { "76", (SByte)(76) },
                { "77", (SByte)(77) },
                { "78", (SByte)(78) },
                { "79", (SByte)(79) },
                { "80", (SByte)(80) },
                { "81", (SByte)(81) },
                { "82", (SByte)(82) },
                { "83", (SByte)(83) },
                { "84", (SByte)(84) },
                { "85", (SByte)(85) },
                { "86", (SByte)(86) },
                { "87", (SByte)(87) },
                { "88", (SByte)(88) },
                { "89", (SByte)(89) },
                { "90", (SByte)(90) },
                { "91", (SByte)(91) },
                { "92", (SByte)(92) },
                { "93", (SByte)(93) },
                { "94", (SByte)(94) },
                { "95", (SByte)(95) },
                { "96", (SByte)(96) },
                { "97", (SByte)(97) },
                { "98", (SByte)(98) },
                { "99", (SByte)(99) },
                { "100", (SByte)(100) },
                { "101", (SByte)(101) },
                { "102", (SByte)(102) },
                { "103", (SByte)(103) },
                { "104", (SByte)(104) },
                { "105", (SByte)(105) },
                { "106", (SByte)(106) },
                { "107", (SByte)(107) },
                { "108", (SByte)(108) },
                { "109", (SByte)(109) },
                { "110", (SByte)(110) },
                { "111", (SByte)(111) },
                { "112", (SByte)(112) },
                { "113", (SByte)(113) },
                { "114", (SByte)(114) },
                { "115", (SByte)(115) },
                { "116", (SByte)(116) },
                { "117", (SByte)(117) },
                { "118", (SByte)(118) },
                { "119", (SByte)(119) },
                { "120", (SByte)(120) },
                { "121", (SByte)(121) },
                { "122", (SByte)(122) },
                { "123", (SByte)(123) },
                { "124", (SByte)(124) },
                { "125", (SByte)(125) },
                { "126", (SByte)(126) },
                { "127", (SByte)(127) },
            });
        }

        [TestMethod]
        public void FastDeserializer_NullableSByte()
        {
            AssertDeserialize(new Asserts<SByte?>
            {
                { "null", (SByte?)null },
                { SByte.MinValue.ToString(), (SByte?)SByte.MinValue },
                { SByte.MaxValue.ToString(), (SByte?)SByte.MaxValue },
                { ((SByte)(SByte.MinValue + 1)).ToString(), (SByte?)(SByte.MinValue + 1) },
                { ((SByte)(SByte.MaxValue - 1)).ToString(), (SByte?)(SByte.MaxValue - 1) },
                { "-128", (SByte?)(-128) },
                { "-127", (SByte?)(-127) },
                { "-126", (SByte?)(-126) },
                { "-125", (SByte?)(-125) },
                { "-124", (SByte?)(-124) },
                { "-123", (SByte?)(-123) },
                { "-122", (SByte?)(-122) },
                { "-121", (SByte?)(-121) },
                { "-120", (SByte?)(-120) },
                { "-119", (SByte?)(-119) },
                { "-118", (SByte?)(-118) },
                { "-117", (SByte?)(-117) },
                { "-116", (SByte?)(-116) },
                { "-115", (SByte?)(-115) },
                { "-114", (SByte?)(-114) },
                { "-113", (SByte?)(-113) },
                { "-112", (SByte?)(-112) },
                { "-111", (SByte?)(-111) },
                { "-110", (SByte?)(-110) },
                { "-109", (SByte?)(-109) },
                { "-108", (SByte?)(-108) },
                { "-107", (SByte?)(-107) },
                { "-106", (SByte?)(-106) },
                { "-105", (SByte?)(-105) },
                { "-104", (SByte?)(-104) },
                { "-103", (SByte?)(-103) },
                { "-102", (SByte?)(-102) },
                { "-101", (SByte?)(-101) },
                { "-100", (SByte?)(-100) },
                { "-99", (SByte?)(-99) },
                { "-98", (SByte?)(-98) },
                { "-97", (SByte?)(-97) },
                { "-96", (SByte?)(-96) },
                { "-95", (SByte?)(-95) },
                { "-94", (SByte?)(-94) },
                { "-93", (SByte?)(-93) },
                { "-92", (SByte?)(-92) },
                { "-91", (SByte?)(-91) },
                { "-90", (SByte?)(-90) },
                { "-89", (SByte?)(-89) },
                { "-88", (SByte?)(-88) },
                { "-87", (SByte?)(-87) },
                { "-86", (SByte?)(-86) },
                { "-85", (SByte?)(-85) },
                { "-84", (SByte?)(-84) },
                { "-83", (SByte?)(-83) },
                { "-82", (SByte?)(-82) },
                { "-81", (SByte?)(-81) },
                { "-80", (SByte?)(-80) },
                { "-79", (SByte?)(-79) },
                { "-78", (SByte?)(-78) },
                { "-77", (SByte?)(-77) },
                { "-76", (SByte?)(-76) },
                { "-75", (SByte?)(-75) },
                { "-74", (SByte?)(-74) },
                { "-73", (SByte?)(-73) },
                { "-72", (SByte?)(-72) },
                { "-71", (SByte?)(-71) },
                { "-70", (SByte?)(-70) },
                { "-69", (SByte?)(-69) },
                { "-68", (SByte?)(-68) },
                { "-67", (SByte?)(-67) },
                { "-66", (SByte?)(-66) },
                { "-65", (SByte?)(-65) },
                { "-64", (SByte?)(-64) },
                { "-63", (SByte?)(-63) },
                { "-62", (SByte?)(-62) },
                { "-61", (SByte?)(-61) },
                { "-60", (SByte?)(-60) },
                { "-59", (SByte?)(-59) },
                { "-58", (SByte?)(-58) },
                { "-57", (SByte?)(-57) },
                { "-56", (SByte?)(-56) },
                { "-55", (SByte?)(-55) },
                { "-54", (SByte?)(-54) },
                { "-53", (SByte?)(-53) },
                { "-52", (SByte?)(-52) },
                { "-51", (SByte?)(-51) },
                { "-50", (SByte?)(-50) },
                { "-49", (SByte?)(-49) },
                { "-48", (SByte?)(-48) },
                { "-47", (SByte?)(-47) },
                { "-46", (SByte?)(-46) },
                { "-45", (SByte?)(-45) },
                { "-44", (SByte?)(-44) },
                { "-43", (SByte?)(-43) },
                { "-42", (SByte?)(-42) },
                { "-41", (SByte?)(-41) },
                { "-40", (SByte?)(-40) },
                { "-39", (SByte?)(-39) },
                { "-38", (SByte?)(-38) },
                { "-37", (SByte?)(-37) },
                { "-36", (SByte?)(-36) },
                { "-35", (SByte?)(-35) },
                { "-34", (SByte?)(-34) },
                { "-33", (SByte?)(-33) },
                { "-32", (SByte?)(-32) },
                { "-31", (SByte?)(-31) },
                { "-30", (SByte?)(-30) },
                { "-29", (SByte?)(-29) },
                { "-28", (SByte?)(-28) },
                { "-27", (SByte?)(-27) },
                { "-26", (SByte?)(-26) },
                { "-25", (SByte?)(-25) },
                { "-24", (SByte?)(-24) },
                { "-23", (SByte?)(-23) },
                { "-22", (SByte?)(-22) },
                { "-21", (SByte?)(-21) },
                { "-20", (SByte?)(-20) },
                { "-19", (SByte?)(-19) },
                { "-18", (SByte?)(-18) },
                { "-17", (SByte?)(-17) },
                { "-16", (SByte?)(-16) },
                { "-15", (SByte?)(-15) },
                { "-14", (SByte?)(-14) },
                { "-13", (SByte?)(-13) },
                { "-12", (SByte?)(-12) },
                { "-11", (SByte?)(-11) },
                { "-10", (SByte?)(-10) },
                { "-9", (SByte?)(-9) },
                { "-8", (SByte?)(-8) },
                { "-7", (SByte?)(-7) },
                { "-6", (SByte?)(-6) },
                { "-5", (SByte?)(-5) },
                { "-4", (SByte?)(-4) },
                { "-3", (SByte?)(-3) },
                { "-2", (SByte?)(-2) },
                { "-1", (SByte?)(-1) },
                { "0", (SByte?)(0) },
                { "1", (SByte?)(1) },
                { "2", (SByte?)(2) },
                { "3", (SByte?)(3) },
                { "4", (SByte?)(4) },
                { "5", (SByte?)(5) },
                { "6", (SByte?)(6) },
                { "7", (SByte?)(7) },
                { "8", (SByte?)(8) },
                { "9", (SByte?)(9) },
                { "10", (SByte?)(10) },
                { "11", (SByte?)(11) },
                { "12", (SByte?)(12) },
                { "13", (SByte?)(13) },
                { "14", (SByte?)(14) },
                { "15", (SByte?)(15) },
                { "16", (SByte?)(16) },
                { "17", (SByte?)(17) },
                { "18", (SByte?)(18) },
                { "19", (SByte?)(19) },
                { "20", (SByte?)(20) },
                { "21", (SByte?)(21) },
                { "22", (SByte?)(22) },
                { "23", (SByte?)(23) },
                { "24", (SByte?)(24) },
                { "25", (SByte?)(25) },
                { "26", (SByte?)(26) },
                { "27", (SByte?)(27) },
                { "28", (SByte?)(28) },
                { "29", (SByte?)(29) },
                { "30", (SByte?)(30) },
                { "31", (SByte?)(31) },
                { "32", (SByte?)(32) },
                { "33", (SByte?)(33) },
                { "34", (SByte?)(34) },
                { "35", (SByte?)(35) },
                { "36", (SByte?)(36) },
                { "37", (SByte?)(37) },
                { "38", (SByte?)(38) },
                { "39", (SByte?)(39) },
                { "40", (SByte?)(40) },
                { "41", (SByte?)(41) },
                { "42", (SByte?)(42) },
                { "43", (SByte?)(43) },
                { "44", (SByte?)(44) },
                { "45", (SByte?)(45) },
                { "46", (SByte?)(46) },
                { "47", (SByte?)(47) },
                { "48", (SByte?)(48) },
                { "49", (SByte?)(49) },
                { "50", (SByte?)(50) },
                { "51", (SByte?)(51) },
                { "52", (SByte?)(52) },
                { "53", (SByte?)(53) },
                { "54", (SByte?)(54) },
                { "55", (SByte?)(55) },
                { "56", (SByte?)(56) },
                { "57", (SByte?)(57) },
                { "58", (SByte?)(58) },
                { "59", (SByte?)(59) },
                { "60", (SByte?)(60) },
                { "61", (SByte?)(61) },
                { "62", (SByte?)(62) },
                { "63", (SByte?)(63) },
                { "64", (SByte?)(64) },
                { "65", (SByte?)(65) },
                { "66", (SByte?)(66) },
                { "67", (SByte?)(67) },
                { "68", (SByte?)(68) },
                { "69", (SByte?)(69) },
                { "70", (SByte?)(70) },
                { "71", (SByte?)(71) },
                { "72", (SByte?)(72) },
                { "73", (SByte?)(73) },
                { "74", (SByte?)(74) },
                { "75", (SByte?)(75) },
                { "76", (SByte?)(76) },
                { "77", (SByte?)(77) },
                { "78", (SByte?)(78) },
                { "79", (SByte?)(79) },
                { "80", (SByte?)(80) },
                { "81", (SByte?)(81) },
                { "82", (SByte?)(82) },
                { "83", (SByte?)(83) },
                { "84", (SByte?)(84) },
                { "85", (SByte?)(85) },
                { "86", (SByte?)(86) },
                { "87", (SByte?)(87) },
                { "88", (SByte?)(88) },
                { "89", (SByte?)(89) },
                { "90", (SByte?)(90) },
                { "91", (SByte?)(91) },
                { "92", (SByte?)(92) },
                { "93", (SByte?)(93) },
                { "94", (SByte?)(94) },
                { "95", (SByte?)(95) },
                { "96", (SByte?)(96) },
                { "97", (SByte?)(97) },
                { "98", (SByte?)(98) },
                { "99", (SByte?)(99) },
                { "100", (SByte?)(100) },
                { "101", (SByte?)(101) },
                { "102", (SByte?)(102) },
                { "103", (SByte?)(103) },
                { "104", (SByte?)(104) },
                { "105", (SByte?)(105) },
                { "106", (SByte?)(106) },
                { "107", (SByte?)(107) },
                { "108", (SByte?)(108) },
                { "109", (SByte?)(109) },
                { "110", (SByte?)(110) },
                { "111", (SByte?)(111) },
                { "112", (SByte?)(112) },
                { "113", (SByte?)(113) },
                { "114", (SByte?)(114) },
                { "115", (SByte?)(115) },
                { "116", (SByte?)(116) },
                { "117", (SByte?)(117) },
                { "118", (SByte?)(118) },
                { "119", (SByte?)(119) },
                { "120", (SByte?)(120) },
                { "121", (SByte?)(121) },
                { "122", (SByte?)(122) },
                { "123", (SByte?)(123) },
                { "124", (SByte?)(124) },
                { "125", (SByte?)(125) },
                { "126", (SByte?)(126) },
                { "127", (SByte?)(127) },
            });
        }

        [TestMethod]
        public void FastDeserializer_Int16()
        {
            AssertDeserialize(new Asserts<Int16>
            {
                { Int16.MinValue.ToString(), (Int16)Int16.MinValue },
                { Int16.MaxValue.ToString(), (Int16)Int16.MaxValue },
                { ((Int16)(Int16.MinValue + 1)).ToString(), (Int16)(Int16.MinValue + 1) },
                { ((Int16)(Int16.MaxValue - 1)).ToString(), (Int16)(Int16.MaxValue - 1) },
                { "-128", (Int16)(-128) },
                { "-127", (Int16)(-127) },
                { "-126", (Int16)(-126) },
                { "-125", (Int16)(-125) },
                { "-124", (Int16)(-124) },
                { "-123", (Int16)(-123) },
                { "-122", (Int16)(-122) },
                { "-121", (Int16)(-121) },
                { "-120", (Int16)(-120) },
                { "-119", (Int16)(-119) },
                { "-118", (Int16)(-118) },
                { "-117", (Int16)(-117) },
                { "-116", (Int16)(-116) },
                { "-115", (Int16)(-115) },
                { "-114", (Int16)(-114) },
                { "-113", (Int16)(-113) },
                { "-112", (Int16)(-112) },
                { "-111", (Int16)(-111) },
                { "-110", (Int16)(-110) },
                { "-109", (Int16)(-109) },
                { "-108", (Int16)(-108) },
                { "-107", (Int16)(-107) },
                { "-106", (Int16)(-106) },
                { "-105", (Int16)(-105) },
                { "-104", (Int16)(-104) },
                { "-103", (Int16)(-103) },
                { "-102", (Int16)(-102) },
                { "-101", (Int16)(-101) },
                { "-100", (Int16)(-100) },
                { "-99", (Int16)(-99) },
                { "-98", (Int16)(-98) },
                { "-97", (Int16)(-97) },
                { "-96", (Int16)(-96) },
                { "-95", (Int16)(-95) },
                { "-94", (Int16)(-94) },
                { "-93", (Int16)(-93) },
                { "-92", (Int16)(-92) },
                { "-91", (Int16)(-91) },
                { "-90", (Int16)(-90) },
                { "-89", (Int16)(-89) },
                { "-88", (Int16)(-88) },
                { "-87", (Int16)(-87) },
                { "-86", (Int16)(-86) },
                { "-85", (Int16)(-85) },
                { "-84", (Int16)(-84) },
                { "-83", (Int16)(-83) },
                { "-82", (Int16)(-82) },
                { "-81", (Int16)(-81) },
                { "-80", (Int16)(-80) },
                { "-79", (Int16)(-79) },
                { "-78", (Int16)(-78) },
                { "-77", (Int16)(-77) },
                { "-76", (Int16)(-76) },
                { "-75", (Int16)(-75) },
                { "-74", (Int16)(-74) },
                { "-73", (Int16)(-73) },
                { "-72", (Int16)(-72) },
                { "-71", (Int16)(-71) },
                { "-70", (Int16)(-70) },
                { "-69", (Int16)(-69) },
                { "-68", (Int16)(-68) },
                { "-67", (Int16)(-67) },
                { "-66", (Int16)(-66) },
                { "-65", (Int16)(-65) },
                { "-64", (Int16)(-64) },
                { "-63", (Int16)(-63) },
                { "-62", (Int16)(-62) },
                { "-61", (Int16)(-61) },
                { "-60", (Int16)(-60) },
                { "-59", (Int16)(-59) },
                { "-58", (Int16)(-58) },
                { "-57", (Int16)(-57) },
                { "-56", (Int16)(-56) },
                { "-55", (Int16)(-55) },
                { "-54", (Int16)(-54) },
                { "-53", (Int16)(-53) },
                { "-52", (Int16)(-52) },
                { "-51", (Int16)(-51) },
                { "-50", (Int16)(-50) },
                { "-49", (Int16)(-49) },
                { "-48", (Int16)(-48) },
                { "-47", (Int16)(-47) },
                { "-46", (Int16)(-46) },
                { "-45", (Int16)(-45) },
                { "-44", (Int16)(-44) },
                { "-43", (Int16)(-43) },
                { "-42", (Int16)(-42) },
                { "-41", (Int16)(-41) },
                { "-40", (Int16)(-40) },
                { "-39", (Int16)(-39) },
                { "-38", (Int16)(-38) },
                { "-37", (Int16)(-37) },
                { "-36", (Int16)(-36) },
                { "-35", (Int16)(-35) },
                { "-34", (Int16)(-34) },
                { "-33", (Int16)(-33) },
                { "-32", (Int16)(-32) },
                { "-31", (Int16)(-31) },
                { "-30", (Int16)(-30) },
                { "-29", (Int16)(-29) },
                { "-28", (Int16)(-28) },
                { "-27", (Int16)(-27) },
                { "-26", (Int16)(-26) },
                { "-25", (Int16)(-25) },
                { "-24", (Int16)(-24) },
                { "-23", (Int16)(-23) },
                { "-22", (Int16)(-22) },
                { "-21", (Int16)(-21) },
                { "-20", (Int16)(-20) },
                { "-19", (Int16)(-19) },
                { "-18", (Int16)(-18) },
                { "-17", (Int16)(-17) },
                { "-16", (Int16)(-16) },
                { "-15", (Int16)(-15) },
                { "-14", (Int16)(-14) },
                { "-13", (Int16)(-13) },
                { "-12", (Int16)(-12) },
                { "-11", (Int16)(-11) },
                { "-10", (Int16)(-10) },
                { "-9", (Int16)(-9) },
                { "-8", (Int16)(-8) },
                { "-7", (Int16)(-7) },
                { "-6", (Int16)(-6) },
                { "-5", (Int16)(-5) },
                { "-4", (Int16)(-4) },
                { "-3", (Int16)(-3) },
                { "-2", (Int16)(-2) },
                { "-1", (Int16)(-1) },
                { "0", (Int16)(0) },
                { "1", (Int16)(1) },
                { "2", (Int16)(2) },
                { "3", (Int16)(3) },
                { "4", (Int16)(4) },
                { "5", (Int16)(5) },
                { "6", (Int16)(6) },
                { "7", (Int16)(7) },
                { "8", (Int16)(8) },
                { "9", (Int16)(9) },
                { "10", (Int16)(10) },
                { "11", (Int16)(11) },
                { "12", (Int16)(12) },
                { "13", (Int16)(13) },
                { "14", (Int16)(14) },
                { "15", (Int16)(15) },
                { "16", (Int16)(16) },
                { "17", (Int16)(17) },
                { "18", (Int16)(18) },
                { "19", (Int16)(19) },
                { "20", (Int16)(20) },
                { "21", (Int16)(21) },
                { "22", (Int16)(22) },
                { "23", (Int16)(23) },
                { "24", (Int16)(24) },
                { "25", (Int16)(25) },
                { "26", (Int16)(26) },
                { "27", (Int16)(27) },
                { "28", (Int16)(28) },
                { "29", (Int16)(29) },
                { "30", (Int16)(30) },
                { "31", (Int16)(31) },
                { "32", (Int16)(32) },
                { "33", (Int16)(33) },
                { "34", (Int16)(34) },
                { "35", (Int16)(35) },
                { "36", (Int16)(36) },
                { "37", (Int16)(37) },
                { "38", (Int16)(38) },
                { "39", (Int16)(39) },
                { "40", (Int16)(40) },
                { "41", (Int16)(41) },
                { "42", (Int16)(42) },
                { "43", (Int16)(43) },
                { "44", (Int16)(44) },
                { "45", (Int16)(45) },
                { "46", (Int16)(46) },
                { "47", (Int16)(47) },
                { "48", (Int16)(48) },
                { "49", (Int16)(49) },
                { "50", (Int16)(50) },
                { "51", (Int16)(51) },
                { "52", (Int16)(52) },
                { "53", (Int16)(53) },
                { "54", (Int16)(54) },
                { "55", (Int16)(55) },
                { "56", (Int16)(56) },
                { "57", (Int16)(57) },
                { "58", (Int16)(58) },
                { "59", (Int16)(59) },
                { "60", (Int16)(60) },
                { "61", (Int16)(61) },
                { "62", (Int16)(62) },
                { "63", (Int16)(63) },
                { "64", (Int16)(64) },
                { "65", (Int16)(65) },
                { "66", (Int16)(66) },
                { "67", (Int16)(67) },
                { "68", (Int16)(68) },
                { "69", (Int16)(69) },
                { "70", (Int16)(70) },
                { "71", (Int16)(71) },
                { "72", (Int16)(72) },
                { "73", (Int16)(73) },
                { "74", (Int16)(74) },
                { "75", (Int16)(75) },
                { "76", (Int16)(76) },
                { "77", (Int16)(77) },
                { "78", (Int16)(78) },
                { "79", (Int16)(79) },
                { "80", (Int16)(80) },
                { "81", (Int16)(81) },
                { "82", (Int16)(82) },
                { "83", (Int16)(83) },
                { "84", (Int16)(84) },
                { "85", (Int16)(85) },
                { "86", (Int16)(86) },
                { "87", (Int16)(87) },
                { "88", (Int16)(88) },
                { "89", (Int16)(89) },
                { "90", (Int16)(90) },
                { "91", (Int16)(91) },
                { "92", (Int16)(92) },
                { "93", (Int16)(93) },
                { "94", (Int16)(94) },
                { "95", (Int16)(95) },
                { "96", (Int16)(96) },
                { "97", (Int16)(97) },
                { "98", (Int16)(98) },
                { "99", (Int16)(99) },
                { "100", (Int16)(100) },
                { "101", (Int16)(101) },
                { "102", (Int16)(102) },
                { "103", (Int16)(103) },
                { "104", (Int16)(104) },
                { "105", (Int16)(105) },
                { "106", (Int16)(106) },
                { "107", (Int16)(107) },
                { "108", (Int16)(108) },
                { "109", (Int16)(109) },
                { "110", (Int16)(110) },
                { "111", (Int16)(111) },
                { "112", (Int16)(112) },
                { "113", (Int16)(113) },
                { "114", (Int16)(114) },
                { "115", (Int16)(115) },
                { "116", (Int16)(116) },
                { "117", (Int16)(117) },
                { "118", (Int16)(118) },
                { "119", (Int16)(119) },
                { "120", (Int16)(120) },
                { "121", (Int16)(121) },
                { "122", (Int16)(122) },
                { "123", (Int16)(123) },
                { "124", (Int16)(124) },
                { "125", (Int16)(125) },
                { "126", (Int16)(126) },
                { "127", (Int16)(127) },
            });
        }

        [TestMethod]
        public void FastDeserializer_NullableInt16()
        {
            AssertDeserialize(new Asserts<Int16?>
            {
                { "null", (Int16?)null },
                { Int16.MinValue.ToString(), (Int16?)Int16.MinValue },
                { Int16.MaxValue.ToString(), (Int16?)Int16.MaxValue },
                { ((Int16)(Int16.MinValue + 1)).ToString(), (Int16?)(Int16.MinValue + 1) },
                { ((Int16)(Int16.MaxValue - 1)).ToString(), (Int16?)(Int16.MaxValue - 1) },
                { "-128", (Int16?)(-128) },
                { "-127", (Int16?)(-127) },
                { "-126", (Int16?)(-126) },
                { "-125", (Int16?)(-125) },
                { "-124", (Int16?)(-124) },
                { "-123", (Int16?)(-123) },
                { "-122", (Int16?)(-122) },
                { "-121", (Int16?)(-121) },
                { "-120", (Int16?)(-120) },
                { "-119", (Int16?)(-119) },
                { "-118", (Int16?)(-118) },
                { "-117", (Int16?)(-117) },
                { "-116", (Int16?)(-116) },
                { "-115", (Int16?)(-115) },
                { "-114", (Int16?)(-114) },
                { "-113", (Int16?)(-113) },
                { "-112", (Int16?)(-112) },
                { "-111", (Int16?)(-111) },
                { "-110", (Int16?)(-110) },
                { "-109", (Int16?)(-109) },
                { "-108", (Int16?)(-108) },
                { "-107", (Int16?)(-107) },
                { "-106", (Int16?)(-106) },
                { "-105", (Int16?)(-105) },
                { "-104", (Int16?)(-104) },
                { "-103", (Int16?)(-103) },
                { "-102", (Int16?)(-102) },
                { "-101", (Int16?)(-101) },
                { "-100", (Int16?)(-100) },
                { "-99", (Int16?)(-99) },
                { "-98", (Int16?)(-98) },
                { "-97", (Int16?)(-97) },
                { "-96", (Int16?)(-96) },
                { "-95", (Int16?)(-95) },
                { "-94", (Int16?)(-94) },
                { "-93", (Int16?)(-93) },
                { "-92", (Int16?)(-92) },
                { "-91", (Int16?)(-91) },
                { "-90", (Int16?)(-90) },
                { "-89", (Int16?)(-89) },
                { "-88", (Int16?)(-88) },
                { "-87", (Int16?)(-87) },
                { "-86", (Int16?)(-86) },
                { "-85", (Int16?)(-85) },
                { "-84", (Int16?)(-84) },
                { "-83", (Int16?)(-83) },
                { "-82", (Int16?)(-82) },
                { "-81", (Int16?)(-81) },
                { "-80", (Int16?)(-80) },
                { "-79", (Int16?)(-79) },
                { "-78", (Int16?)(-78) },
                { "-77", (Int16?)(-77) },
                { "-76", (Int16?)(-76) },
                { "-75", (Int16?)(-75) },
                { "-74", (Int16?)(-74) },
                { "-73", (Int16?)(-73) },
                { "-72", (Int16?)(-72) },
                { "-71", (Int16?)(-71) },
                { "-70", (Int16?)(-70) },
                { "-69", (Int16?)(-69) },
                { "-68", (Int16?)(-68) },
                { "-67", (Int16?)(-67) },
                { "-66", (Int16?)(-66) },
                { "-65", (Int16?)(-65) },
                { "-64", (Int16?)(-64) },
                { "-63", (Int16?)(-63) },
                { "-62", (Int16?)(-62) },
                { "-61", (Int16?)(-61) },
                { "-60", (Int16?)(-60) },
                { "-59", (Int16?)(-59) },
                { "-58", (Int16?)(-58) },
                { "-57", (Int16?)(-57) },
                { "-56", (Int16?)(-56) },
                { "-55", (Int16?)(-55) },
                { "-54", (Int16?)(-54) },
                { "-53", (Int16?)(-53) },
                { "-52", (Int16?)(-52) },
                { "-51", (Int16?)(-51) },
                { "-50", (Int16?)(-50) },
                { "-49", (Int16?)(-49) },
                { "-48", (Int16?)(-48) },
                { "-47", (Int16?)(-47) },
                { "-46", (Int16?)(-46) },
                { "-45", (Int16?)(-45) },
                { "-44", (Int16?)(-44) },
                { "-43", (Int16?)(-43) },
                { "-42", (Int16?)(-42) },
                { "-41", (Int16?)(-41) },
                { "-40", (Int16?)(-40) },
                { "-39", (Int16?)(-39) },
                { "-38", (Int16?)(-38) },
                { "-37", (Int16?)(-37) },
                { "-36", (Int16?)(-36) },
                { "-35", (Int16?)(-35) },
                { "-34", (Int16?)(-34) },
                { "-33", (Int16?)(-33) },
                { "-32", (Int16?)(-32) },
                { "-31", (Int16?)(-31) },
                { "-30", (Int16?)(-30) },
                { "-29", (Int16?)(-29) },
                { "-28", (Int16?)(-28) },
                { "-27", (Int16?)(-27) },
                { "-26", (Int16?)(-26) },
                { "-25", (Int16?)(-25) },
                { "-24", (Int16?)(-24) },
                { "-23", (Int16?)(-23) },
                { "-22", (Int16?)(-22) },
                { "-21", (Int16?)(-21) },
                { "-20", (Int16?)(-20) },
                { "-19", (Int16?)(-19) },
                { "-18", (Int16?)(-18) },
                { "-17", (Int16?)(-17) },
                { "-16", (Int16?)(-16) },
                { "-15", (Int16?)(-15) },
                { "-14", (Int16?)(-14) },
                { "-13", (Int16?)(-13) },
                { "-12", (Int16?)(-12) },
                { "-11", (Int16?)(-11) },
                { "-10", (Int16?)(-10) },
                { "-9", (Int16?)(-9) },
                { "-8", (Int16?)(-8) },
                { "-7", (Int16?)(-7) },
                { "-6", (Int16?)(-6) },
                { "-5", (Int16?)(-5) },
                { "-4", (Int16?)(-4) },
                { "-3", (Int16?)(-3) },
                { "-2", (Int16?)(-2) },
                { "-1", (Int16?)(-1) },
                { "0", (Int16?)(0) },
                { "1", (Int16?)(1) },
                { "2", (Int16?)(2) },
                { "3", (Int16?)(3) },
                { "4", (Int16?)(4) },
                { "5", (Int16?)(5) },
                { "6", (Int16?)(6) },
                { "7", (Int16?)(7) },
                { "8", (Int16?)(8) },
                { "9", (Int16?)(9) },
                { "10", (Int16?)(10) },
                { "11", (Int16?)(11) },
                { "12", (Int16?)(12) },
                { "13", (Int16?)(13) },
                { "14", (Int16?)(14) },
                { "15", (Int16?)(15) },
                { "16", (Int16?)(16) },
                { "17", (Int16?)(17) },
                { "18", (Int16?)(18) },
                { "19", (Int16?)(19) },
                { "20", (Int16?)(20) },
                { "21", (Int16?)(21) },
                { "22", (Int16?)(22) },
                { "23", (Int16?)(23) },
                { "24", (Int16?)(24) },
                { "25", (Int16?)(25) },
                { "26", (Int16?)(26) },
                { "27", (Int16?)(27) },
                { "28", (Int16?)(28) },
                { "29", (Int16?)(29) },
                { "30", (Int16?)(30) },
                { "31", (Int16?)(31) },
                { "32", (Int16?)(32) },
                { "33", (Int16?)(33) },
                { "34", (Int16?)(34) },
                { "35", (Int16?)(35) },
                { "36", (Int16?)(36) },
                { "37", (Int16?)(37) },
                { "38", (Int16?)(38) },
                { "39", (Int16?)(39) },
                { "40", (Int16?)(40) },
                { "41", (Int16?)(41) },
                { "42", (Int16?)(42) },
                { "43", (Int16?)(43) },
                { "44", (Int16?)(44) },
                { "45", (Int16?)(45) },
                { "46", (Int16?)(46) },
                { "47", (Int16?)(47) },
                { "48", (Int16?)(48) },
                { "49", (Int16?)(49) },
                { "50", (Int16?)(50) },
                { "51", (Int16?)(51) },
                { "52", (Int16?)(52) },
                { "53", (Int16?)(53) },
                { "54", (Int16?)(54) },
                { "55", (Int16?)(55) },
                { "56", (Int16?)(56) },
                { "57", (Int16?)(57) },
                { "58", (Int16?)(58) },
                { "59", (Int16?)(59) },
                { "60", (Int16?)(60) },
                { "61", (Int16?)(61) },
                { "62", (Int16?)(62) },
                { "63", (Int16?)(63) },
                { "64", (Int16?)(64) },
                { "65", (Int16?)(65) },
                { "66", (Int16?)(66) },
                { "67", (Int16?)(67) },
                { "68", (Int16?)(68) },
                { "69", (Int16?)(69) },
                { "70", (Int16?)(70) },
                { "71", (Int16?)(71) },
                { "72", (Int16?)(72) },
                { "73", (Int16?)(73) },
                { "74", (Int16?)(74) },
                { "75", (Int16?)(75) },
                { "76", (Int16?)(76) },
                { "77", (Int16?)(77) },
                { "78", (Int16?)(78) },
                { "79", (Int16?)(79) },
                { "80", (Int16?)(80) },
                { "81", (Int16?)(81) },
                { "82", (Int16?)(82) },
                { "83", (Int16?)(83) },
                { "84", (Int16?)(84) },
                { "85", (Int16?)(85) },
                { "86", (Int16?)(86) },
                { "87", (Int16?)(87) },
                { "88", (Int16?)(88) },
                { "89", (Int16?)(89) },
                { "90", (Int16?)(90) },
                { "91", (Int16?)(91) },
                { "92", (Int16?)(92) },
                { "93", (Int16?)(93) },
                { "94", (Int16?)(94) },
                { "95", (Int16?)(95) },
                { "96", (Int16?)(96) },
                { "97", (Int16?)(97) },
                { "98", (Int16?)(98) },
                { "99", (Int16?)(99) },
                { "100", (Int16?)(100) },
                { "101", (Int16?)(101) },
                { "102", (Int16?)(102) },
                { "103", (Int16?)(103) },
                { "104", (Int16?)(104) },
                { "105", (Int16?)(105) },
                { "106", (Int16?)(106) },
                { "107", (Int16?)(107) },
                { "108", (Int16?)(108) },
                { "109", (Int16?)(109) },
                { "110", (Int16?)(110) },
                { "111", (Int16?)(111) },
                { "112", (Int16?)(112) },
                { "113", (Int16?)(113) },
                { "114", (Int16?)(114) },
                { "115", (Int16?)(115) },
                { "116", (Int16?)(116) },
                { "117", (Int16?)(117) },
                { "118", (Int16?)(118) },
                { "119", (Int16?)(119) },
                { "120", (Int16?)(120) },
                { "121", (Int16?)(121) },
                { "122", (Int16?)(122) },
                { "123", (Int16?)(123) },
                { "124", (Int16?)(124) },
                { "125", (Int16?)(125) },
                { "126", (Int16?)(126) },
                { "127", (Int16?)(127) },
            });
        }

        [TestMethod]
        public void FastDeserializer_Int32()
        {
            AssertDeserialize(new Asserts<Int32>
            {
                { Int32.MinValue.ToString(), (Int32)Int32.MinValue },
                { Int32.MaxValue.ToString(), (Int32)Int32.MaxValue },
                { ((Int32)(Int32.MinValue + 1)).ToString(), (Int32)(Int32.MinValue + 1) },
                { ((Int32)(Int32.MaxValue - 1)).ToString(), (Int32)(Int32.MaxValue - 1) },
                { "-128", (Int32)(-128) },
                { "-127", (Int32)(-127) },
                { "-126", (Int32)(-126) },
                { "-125", (Int32)(-125) },
                { "-124", (Int32)(-124) },
                { "-123", (Int32)(-123) },
                { "-122", (Int32)(-122) },
                { "-121", (Int32)(-121) },
                { "-120", (Int32)(-120) },
                { "-119", (Int32)(-119) },
                { "-118", (Int32)(-118) },
                { "-117", (Int32)(-117) },
                { "-116", (Int32)(-116) },
                { "-115", (Int32)(-115) },
                { "-114", (Int32)(-114) },
                { "-113", (Int32)(-113) },
                { "-112", (Int32)(-112) },
                { "-111", (Int32)(-111) },
                { "-110", (Int32)(-110) },
                { "-109", (Int32)(-109) },
                { "-108", (Int32)(-108) },
                { "-107", (Int32)(-107) },
                { "-106", (Int32)(-106) },
                { "-105", (Int32)(-105) },
                { "-104", (Int32)(-104) },
                { "-103", (Int32)(-103) },
                { "-102", (Int32)(-102) },
                { "-101", (Int32)(-101) },
                { "-100", (Int32)(-100) },
                { "-99", (Int32)(-99) },
                { "-98", (Int32)(-98) },
                { "-97", (Int32)(-97) },
                { "-96", (Int32)(-96) },
                { "-95", (Int32)(-95) },
                { "-94", (Int32)(-94) },
                { "-93", (Int32)(-93) },
                { "-92", (Int32)(-92) },
                { "-91", (Int32)(-91) },
                { "-90", (Int32)(-90) },
                { "-89", (Int32)(-89) },
                { "-88", (Int32)(-88) },
                { "-87", (Int32)(-87) },
                { "-86", (Int32)(-86) },
                { "-85", (Int32)(-85) },
                { "-84", (Int32)(-84) },
                { "-83", (Int32)(-83) },
                { "-82", (Int32)(-82) },
                { "-81", (Int32)(-81) },
                { "-80", (Int32)(-80) },
                { "-79", (Int32)(-79) },
                { "-78", (Int32)(-78) },
                { "-77", (Int32)(-77) },
                { "-76", (Int32)(-76) },
                { "-75", (Int32)(-75) },
                { "-74", (Int32)(-74) },
                { "-73", (Int32)(-73) },
                { "-72", (Int32)(-72) },
                { "-71", (Int32)(-71) },
                { "-70", (Int32)(-70) },
                { "-69", (Int32)(-69) },
                { "-68", (Int32)(-68) },
                { "-67", (Int32)(-67) },
                { "-66", (Int32)(-66) },
                { "-65", (Int32)(-65) },
                { "-64", (Int32)(-64) },
                { "-63", (Int32)(-63) },
                { "-62", (Int32)(-62) },
                { "-61", (Int32)(-61) },
                { "-60", (Int32)(-60) },
                { "-59", (Int32)(-59) },
                { "-58", (Int32)(-58) },
                { "-57", (Int32)(-57) },
                { "-56", (Int32)(-56) },
                { "-55", (Int32)(-55) },
                { "-54", (Int32)(-54) },
                { "-53", (Int32)(-53) },
                { "-52", (Int32)(-52) },
                { "-51", (Int32)(-51) },
                { "-50", (Int32)(-50) },
                { "-49", (Int32)(-49) },
                { "-48", (Int32)(-48) },
                { "-47", (Int32)(-47) },
                { "-46", (Int32)(-46) },
                { "-45", (Int32)(-45) },
                { "-44", (Int32)(-44) },
                { "-43", (Int32)(-43) },
                { "-42", (Int32)(-42) },
                { "-41", (Int32)(-41) },
                { "-40", (Int32)(-40) },
                { "-39", (Int32)(-39) },
                { "-38", (Int32)(-38) },
                { "-37", (Int32)(-37) },
                { "-36", (Int32)(-36) },
                { "-35", (Int32)(-35) },
                { "-34", (Int32)(-34) },
                { "-33", (Int32)(-33) },
                { "-32", (Int32)(-32) },
                { "-31", (Int32)(-31) },
                { "-30", (Int32)(-30) },
                { "-29", (Int32)(-29) },
                { "-28", (Int32)(-28) },
                { "-27", (Int32)(-27) },
                { "-26", (Int32)(-26) },
                { "-25", (Int32)(-25) },
                { "-24", (Int32)(-24) },
                { "-23", (Int32)(-23) },
                { "-22", (Int32)(-22) },
                { "-21", (Int32)(-21) },
                { "-20", (Int32)(-20) },
                { "-19", (Int32)(-19) },
                { "-18", (Int32)(-18) },
                { "-17", (Int32)(-17) },
                { "-16", (Int32)(-16) },
                { "-15", (Int32)(-15) },
                { "-14", (Int32)(-14) },
                { "-13", (Int32)(-13) },
                { "-12", (Int32)(-12) },
                { "-11", (Int32)(-11) },
                { "-10", (Int32)(-10) },
                { "-9", (Int32)(-9) },
                { "-8", (Int32)(-8) },
                { "-7", (Int32)(-7) },
                { "-6", (Int32)(-6) },
                { "-5", (Int32)(-5) },
                { "-4", (Int32)(-4) },
                { "-3", (Int32)(-3) },
                { "-2", (Int32)(-2) },
                { "-1", (Int32)(-1) },
                { "0", (Int32)(0) },
                { "1", (Int32)(1) },
                { "2", (Int32)(2) },
                { "3", (Int32)(3) },
                { "4", (Int32)(4) },
                { "5", (Int32)(5) },
                { "6", (Int32)(6) },
                { "7", (Int32)(7) },
                { "8", (Int32)(8) },
                { "9", (Int32)(9) },
                { "10", (Int32)(10) },
                { "11", (Int32)(11) },
                { "12", (Int32)(12) },
                { "13", (Int32)(13) },
                { "14", (Int32)(14) },
                { "15", (Int32)(15) },
                { "16", (Int32)(16) },
                { "17", (Int32)(17) },
                { "18", (Int32)(18) },
                { "19", (Int32)(19) },
                { "20", (Int32)(20) },
                { "21", (Int32)(21) },
                { "22", (Int32)(22) },
                { "23", (Int32)(23) },
                { "24", (Int32)(24) },
                { "25", (Int32)(25) },
                { "26", (Int32)(26) },
                { "27", (Int32)(27) },
                { "28", (Int32)(28) },
                { "29", (Int32)(29) },
                { "30", (Int32)(30) },
                { "31", (Int32)(31) },
                { "32", (Int32)(32) },
                { "33", (Int32)(33) },
                { "34", (Int32)(34) },
                { "35", (Int32)(35) },
                { "36", (Int32)(36) },
                { "37", (Int32)(37) },
                { "38", (Int32)(38) },
                { "39", (Int32)(39) },
                { "40", (Int32)(40) },
                { "41", (Int32)(41) },
                { "42", (Int32)(42) },
                { "43", (Int32)(43) },
                { "44", (Int32)(44) },
                { "45", (Int32)(45) },
                { "46", (Int32)(46) },
                { "47", (Int32)(47) },
                { "48", (Int32)(48) },
                { "49", (Int32)(49) },
                { "50", (Int32)(50) },
                { "51", (Int32)(51) },
                { "52", (Int32)(52) },
                { "53", (Int32)(53) },
                { "54", (Int32)(54) },
                { "55", (Int32)(55) },
                { "56", (Int32)(56) },
                { "57", (Int32)(57) },
                { "58", (Int32)(58) },
                { "59", (Int32)(59) },
                { "60", (Int32)(60) },
                { "61", (Int32)(61) },
                { "62", (Int32)(62) },
                { "63", (Int32)(63) },
                { "64", (Int32)(64) },
                { "65", (Int32)(65) },
                { "66", (Int32)(66) },
                { "67", (Int32)(67) },
                { "68", (Int32)(68) },
                { "69", (Int32)(69) },
                { "70", (Int32)(70) },
                { "71", (Int32)(71) },
                { "72", (Int32)(72) },
                { "73", (Int32)(73) },
                { "74", (Int32)(74) },
                { "75", (Int32)(75) },
                { "76", (Int32)(76) },
                { "77", (Int32)(77) },
                { "78", (Int32)(78) },
                { "79", (Int32)(79) },
                { "80", (Int32)(80) },
                { "81", (Int32)(81) },
                { "82", (Int32)(82) },
                { "83", (Int32)(83) },
                { "84", (Int32)(84) },
                { "85", (Int32)(85) },
                { "86", (Int32)(86) },
                { "87", (Int32)(87) },
                { "88", (Int32)(88) },
                { "89", (Int32)(89) },
                { "90", (Int32)(90) },
                { "91", (Int32)(91) },
                { "92", (Int32)(92) },
                { "93", (Int32)(93) },
                { "94", (Int32)(94) },
                { "95", (Int32)(95) },
                { "96", (Int32)(96) },
                { "97", (Int32)(97) },
                { "98", (Int32)(98) },
                { "99", (Int32)(99) },
                { "100", (Int32)(100) },
                { "101", (Int32)(101) },
                { "102", (Int32)(102) },
                { "103", (Int32)(103) },
                { "104", (Int32)(104) },
                { "105", (Int32)(105) },
                { "106", (Int32)(106) },
                { "107", (Int32)(107) },
                { "108", (Int32)(108) },
                { "109", (Int32)(109) },
                { "110", (Int32)(110) },
                { "111", (Int32)(111) },
                { "112", (Int32)(112) },
                { "113", (Int32)(113) },
                { "114", (Int32)(114) },
                { "115", (Int32)(115) },
                { "116", (Int32)(116) },
                { "117", (Int32)(117) },
                { "118", (Int32)(118) },
                { "119", (Int32)(119) },
                { "120", (Int32)(120) },
                { "121", (Int32)(121) },
                { "122", (Int32)(122) },
                { "123", (Int32)(123) },
                { "124", (Int32)(124) },
                { "125", (Int32)(125) },
                { "126", (Int32)(126) },
                { "127", (Int32)(127) },
            });
        }

        [TestMethod]
        public void FastDeserializer_NullableInt32()
        {
            AssertDeserialize(new Asserts<Int32?>
            {
                { "null", (Int32?)null },
                { Int32.MinValue.ToString(), (Int32?)Int32.MinValue },
                { Int32.MaxValue.ToString(), (Int32?)Int32.MaxValue },
                { ((Int32)(Int32.MinValue + 1)).ToString(), (Int32?)(Int32.MinValue + 1) },
                { ((Int32)(Int32.MaxValue - 1)).ToString(), (Int32?)(Int32.MaxValue - 1) },
                { "-128", (Int32?)(-128) },
                { "-127", (Int32?)(-127) },
                { "-126", (Int32?)(-126) },
                { "-125", (Int32?)(-125) },
                { "-124", (Int32?)(-124) },
                { "-123", (Int32?)(-123) },
                { "-122", (Int32?)(-122) },
                { "-121", (Int32?)(-121) },
                { "-120", (Int32?)(-120) },
                { "-119", (Int32?)(-119) },
                { "-118", (Int32?)(-118) },
                { "-117", (Int32?)(-117) },
                { "-116", (Int32?)(-116) },
                { "-115", (Int32?)(-115) },
                { "-114", (Int32?)(-114) },
                { "-113", (Int32?)(-113) },
                { "-112", (Int32?)(-112) },
                { "-111", (Int32?)(-111) },
                { "-110", (Int32?)(-110) },
                { "-109", (Int32?)(-109) },
                { "-108", (Int32?)(-108) },
                { "-107", (Int32?)(-107) },
                { "-106", (Int32?)(-106) },
                { "-105", (Int32?)(-105) },
                { "-104", (Int32?)(-104) },
                { "-103", (Int32?)(-103) },
                { "-102", (Int32?)(-102) },
                { "-101", (Int32?)(-101) },
                { "-100", (Int32?)(-100) },
                { "-99", (Int32?)(-99) },
                { "-98", (Int32?)(-98) },
                { "-97", (Int32?)(-97) },
                { "-96", (Int32?)(-96) },
                { "-95", (Int32?)(-95) },
                { "-94", (Int32?)(-94) },
                { "-93", (Int32?)(-93) },
                { "-92", (Int32?)(-92) },
                { "-91", (Int32?)(-91) },
                { "-90", (Int32?)(-90) },
                { "-89", (Int32?)(-89) },
                { "-88", (Int32?)(-88) },
                { "-87", (Int32?)(-87) },
                { "-86", (Int32?)(-86) },
                { "-85", (Int32?)(-85) },
                { "-84", (Int32?)(-84) },
                { "-83", (Int32?)(-83) },
                { "-82", (Int32?)(-82) },
                { "-81", (Int32?)(-81) },
                { "-80", (Int32?)(-80) },
                { "-79", (Int32?)(-79) },
                { "-78", (Int32?)(-78) },
                { "-77", (Int32?)(-77) },
                { "-76", (Int32?)(-76) },
                { "-75", (Int32?)(-75) },
                { "-74", (Int32?)(-74) },
                { "-73", (Int32?)(-73) },
                { "-72", (Int32?)(-72) },
                { "-71", (Int32?)(-71) },
                { "-70", (Int32?)(-70) },
                { "-69", (Int32?)(-69) },
                { "-68", (Int32?)(-68) },
                { "-67", (Int32?)(-67) },
                { "-66", (Int32?)(-66) },
                { "-65", (Int32?)(-65) },
                { "-64", (Int32?)(-64) },
                { "-63", (Int32?)(-63) },
                { "-62", (Int32?)(-62) },
                { "-61", (Int32?)(-61) },
                { "-60", (Int32?)(-60) },
                { "-59", (Int32?)(-59) },
                { "-58", (Int32?)(-58) },
                { "-57", (Int32?)(-57) },
                { "-56", (Int32?)(-56) },
                { "-55", (Int32?)(-55) },
                { "-54", (Int32?)(-54) },
                { "-53", (Int32?)(-53) },
                { "-52", (Int32?)(-52) },
                { "-51", (Int32?)(-51) },
                { "-50", (Int32?)(-50) },
                { "-49", (Int32?)(-49) },
                { "-48", (Int32?)(-48) },
                { "-47", (Int32?)(-47) },
                { "-46", (Int32?)(-46) },
                { "-45", (Int32?)(-45) },
                { "-44", (Int32?)(-44) },
                { "-43", (Int32?)(-43) },
                { "-42", (Int32?)(-42) },
                { "-41", (Int32?)(-41) },
                { "-40", (Int32?)(-40) },
                { "-39", (Int32?)(-39) },
                { "-38", (Int32?)(-38) },
                { "-37", (Int32?)(-37) },
                { "-36", (Int32?)(-36) },
                { "-35", (Int32?)(-35) },
                { "-34", (Int32?)(-34) },
                { "-33", (Int32?)(-33) },
                { "-32", (Int32?)(-32) },
                { "-31", (Int32?)(-31) },
                { "-30", (Int32?)(-30) },
                { "-29", (Int32?)(-29) },
                { "-28", (Int32?)(-28) },
                { "-27", (Int32?)(-27) },
                { "-26", (Int32?)(-26) },
                { "-25", (Int32?)(-25) },
                { "-24", (Int32?)(-24) },
                { "-23", (Int32?)(-23) },
                { "-22", (Int32?)(-22) },
                { "-21", (Int32?)(-21) },
                { "-20", (Int32?)(-20) },
                { "-19", (Int32?)(-19) },
                { "-18", (Int32?)(-18) },
                { "-17", (Int32?)(-17) },
                { "-16", (Int32?)(-16) },
                { "-15", (Int32?)(-15) },
                { "-14", (Int32?)(-14) },
                { "-13", (Int32?)(-13) },
                { "-12", (Int32?)(-12) },
                { "-11", (Int32?)(-11) },
                { "-10", (Int32?)(-10) },
                { "-9", (Int32?)(-9) },
                { "-8", (Int32?)(-8) },
                { "-7", (Int32?)(-7) },
                { "-6", (Int32?)(-6) },
                { "-5", (Int32?)(-5) },
                { "-4", (Int32?)(-4) },
                { "-3", (Int32?)(-3) },
                { "-2", (Int32?)(-2) },
                { "-1", (Int32?)(-1) },
                { "0", (Int32?)(0) },
                { "1", (Int32?)(1) },
                { "2", (Int32?)(2) },
                { "3", (Int32?)(3) },
                { "4", (Int32?)(4) },
                { "5", (Int32?)(5) },
                { "6", (Int32?)(6) },
                { "7", (Int32?)(7) },
                { "8", (Int32?)(8) },
                { "9", (Int32?)(9) },
                { "10", (Int32?)(10) },
                { "11", (Int32?)(11) },
                { "12", (Int32?)(12) },
                { "13", (Int32?)(13) },
                { "14", (Int32?)(14) },
                { "15", (Int32?)(15) },
                { "16", (Int32?)(16) },
                { "17", (Int32?)(17) },
                { "18", (Int32?)(18) },
                { "19", (Int32?)(19) },
                { "20", (Int32?)(20) },
                { "21", (Int32?)(21) },
                { "22", (Int32?)(22) },
                { "23", (Int32?)(23) },
                { "24", (Int32?)(24) },
                { "25", (Int32?)(25) },
                { "26", (Int32?)(26) },
                { "27", (Int32?)(27) },
                { "28", (Int32?)(28) },
                { "29", (Int32?)(29) },
                { "30", (Int32?)(30) },
                { "31", (Int32?)(31) },
                { "32", (Int32?)(32) },
                { "33", (Int32?)(33) },
                { "34", (Int32?)(34) },
                { "35", (Int32?)(35) },
                { "36", (Int32?)(36) },
                { "37", (Int32?)(37) },
                { "38", (Int32?)(38) },
                { "39", (Int32?)(39) },
                { "40", (Int32?)(40) },
                { "41", (Int32?)(41) },
                { "42", (Int32?)(42) },
                { "43", (Int32?)(43) },
                { "44", (Int32?)(44) },
                { "45", (Int32?)(45) },
                { "46", (Int32?)(46) },
                { "47", (Int32?)(47) },
                { "48", (Int32?)(48) },
                { "49", (Int32?)(49) },
                { "50", (Int32?)(50) },
                { "51", (Int32?)(51) },
                { "52", (Int32?)(52) },
                { "53", (Int32?)(53) },
                { "54", (Int32?)(54) },
                { "55", (Int32?)(55) },
                { "56", (Int32?)(56) },
                { "57", (Int32?)(57) },
                { "58", (Int32?)(58) },
                { "59", (Int32?)(59) },
                { "60", (Int32?)(60) },
                { "61", (Int32?)(61) },
                { "62", (Int32?)(62) },
                { "63", (Int32?)(63) },
                { "64", (Int32?)(64) },
                { "65", (Int32?)(65) },
                { "66", (Int32?)(66) },
                { "67", (Int32?)(67) },
                { "68", (Int32?)(68) },
                { "69", (Int32?)(69) },
                { "70", (Int32?)(70) },
                { "71", (Int32?)(71) },
                { "72", (Int32?)(72) },
                { "73", (Int32?)(73) },
                { "74", (Int32?)(74) },
                { "75", (Int32?)(75) },
                { "76", (Int32?)(76) },
                { "77", (Int32?)(77) },
                { "78", (Int32?)(78) },
                { "79", (Int32?)(79) },
                { "80", (Int32?)(80) },
                { "81", (Int32?)(81) },
                { "82", (Int32?)(82) },
                { "83", (Int32?)(83) },
                { "84", (Int32?)(84) },
                { "85", (Int32?)(85) },
                { "86", (Int32?)(86) },
                { "87", (Int32?)(87) },
                { "88", (Int32?)(88) },
                { "89", (Int32?)(89) },
                { "90", (Int32?)(90) },
                { "91", (Int32?)(91) },
                { "92", (Int32?)(92) },
                { "93", (Int32?)(93) },
                { "94", (Int32?)(94) },
                { "95", (Int32?)(95) },
                { "96", (Int32?)(96) },
                { "97", (Int32?)(97) },
                { "98", (Int32?)(98) },
                { "99", (Int32?)(99) },
                { "100", (Int32?)(100) },
                { "101", (Int32?)(101) },
                { "102", (Int32?)(102) },
                { "103", (Int32?)(103) },
                { "104", (Int32?)(104) },
                { "105", (Int32?)(105) },
                { "106", (Int32?)(106) },
                { "107", (Int32?)(107) },
                { "108", (Int32?)(108) },
                { "109", (Int32?)(109) },
                { "110", (Int32?)(110) },
                { "111", (Int32?)(111) },
                { "112", (Int32?)(112) },
                { "113", (Int32?)(113) },
                { "114", (Int32?)(114) },
                { "115", (Int32?)(115) },
                { "116", (Int32?)(116) },
                { "117", (Int32?)(117) },
                { "118", (Int32?)(118) },
                { "119", (Int32?)(119) },
                { "120", (Int32?)(120) },
                { "121", (Int32?)(121) },
                { "122", (Int32?)(122) },
                { "123", (Int32?)(123) },
                { "124", (Int32?)(124) },
                { "125", (Int32?)(125) },
                { "126", (Int32?)(126) },
                { "127", (Int32?)(127) },
            });
        }

        [TestMethod]
        public void FastDeserializer_Int64()
        {
            AssertDeserialize(new Asserts<Int64>
            {
                { Int64.MinValue.ToString(), (Int64)Int64.MinValue },
                { Int64.MaxValue.ToString(), (Int64)Int64.MaxValue },
                { ((Int64)(Int64.MinValue + 1)).ToString(), (Int64)(Int64.MinValue + 1) },
                { ((Int64)(Int64.MaxValue - 1)).ToString(), (Int64)(Int64.MaxValue - 1) },
                { "-128", (Int64)(-128) },
                { "-127", (Int64)(-127) },
                { "-126", (Int64)(-126) },
                { "-125", (Int64)(-125) },
                { "-124", (Int64)(-124) },
                { "-123", (Int64)(-123) },
                { "-122", (Int64)(-122) },
                { "-121", (Int64)(-121) },
                { "-120", (Int64)(-120) },
                { "-119", (Int64)(-119) },
                { "-118", (Int64)(-118) },
                { "-117", (Int64)(-117) },
                { "-116", (Int64)(-116) },
                { "-115", (Int64)(-115) },
                { "-114", (Int64)(-114) },
                { "-113", (Int64)(-113) },
                { "-112", (Int64)(-112) },
                { "-111", (Int64)(-111) },
                { "-110", (Int64)(-110) },
                { "-109", (Int64)(-109) },
                { "-108", (Int64)(-108) },
                { "-107", (Int64)(-107) },
                { "-106", (Int64)(-106) },
                { "-105", (Int64)(-105) },
                { "-104", (Int64)(-104) },
                { "-103", (Int64)(-103) },
                { "-102", (Int64)(-102) },
                { "-101", (Int64)(-101) },
                { "-100", (Int64)(-100) },
                { "-99", (Int64)(-99) },
                { "-98", (Int64)(-98) },
                { "-97", (Int64)(-97) },
                { "-96", (Int64)(-96) },
                { "-95", (Int64)(-95) },
                { "-94", (Int64)(-94) },
                { "-93", (Int64)(-93) },
                { "-92", (Int64)(-92) },
                { "-91", (Int64)(-91) },
                { "-90", (Int64)(-90) },
                { "-89", (Int64)(-89) },
                { "-88", (Int64)(-88) },
                { "-87", (Int64)(-87) },
                { "-86", (Int64)(-86) },
                { "-85", (Int64)(-85) },
                { "-84", (Int64)(-84) },
                { "-83", (Int64)(-83) },
                { "-82", (Int64)(-82) },
                { "-81", (Int64)(-81) },
                { "-80", (Int64)(-80) },
                { "-79", (Int64)(-79) },
                { "-78", (Int64)(-78) },
                { "-77", (Int64)(-77) },
                { "-76", (Int64)(-76) },
                { "-75", (Int64)(-75) },
                { "-74", (Int64)(-74) },
                { "-73", (Int64)(-73) },
                { "-72", (Int64)(-72) },
                { "-71", (Int64)(-71) },
                { "-70", (Int64)(-70) },
                { "-69", (Int64)(-69) },
                { "-68", (Int64)(-68) },
                { "-67", (Int64)(-67) },
                { "-66", (Int64)(-66) },
                { "-65", (Int64)(-65) },
                { "-64", (Int64)(-64) },
                { "-63", (Int64)(-63) },
                { "-62", (Int64)(-62) },
                { "-61", (Int64)(-61) },
                { "-60", (Int64)(-60) },
                { "-59", (Int64)(-59) },
                { "-58", (Int64)(-58) },
                { "-57", (Int64)(-57) },
                { "-56", (Int64)(-56) },
                { "-55", (Int64)(-55) },
                { "-54", (Int64)(-54) },
                { "-53", (Int64)(-53) },
                { "-52", (Int64)(-52) },
                { "-51", (Int64)(-51) },
                { "-50", (Int64)(-50) },
                { "-49", (Int64)(-49) },
                { "-48", (Int64)(-48) },
                { "-47", (Int64)(-47) },
                { "-46", (Int64)(-46) },
                { "-45", (Int64)(-45) },
                { "-44", (Int64)(-44) },
                { "-43", (Int64)(-43) },
                { "-42", (Int64)(-42) },
                { "-41", (Int64)(-41) },
                { "-40", (Int64)(-40) },
                { "-39", (Int64)(-39) },
                { "-38", (Int64)(-38) },
                { "-37", (Int64)(-37) },
                { "-36", (Int64)(-36) },
                { "-35", (Int64)(-35) },
                { "-34", (Int64)(-34) },
                { "-33", (Int64)(-33) },
                { "-32", (Int64)(-32) },
                { "-31", (Int64)(-31) },
                { "-30", (Int64)(-30) },
                { "-29", (Int64)(-29) },
                { "-28", (Int64)(-28) },
                { "-27", (Int64)(-27) },
                { "-26", (Int64)(-26) },
                { "-25", (Int64)(-25) },
                { "-24", (Int64)(-24) },
                { "-23", (Int64)(-23) },
                { "-22", (Int64)(-22) },
                { "-21", (Int64)(-21) },
                { "-20", (Int64)(-20) },
                { "-19", (Int64)(-19) },
                { "-18", (Int64)(-18) },
                { "-17", (Int64)(-17) },
                { "-16", (Int64)(-16) },
                { "-15", (Int64)(-15) },
                { "-14", (Int64)(-14) },
                { "-13", (Int64)(-13) },
                { "-12", (Int64)(-12) },
                { "-11", (Int64)(-11) },
                { "-10", (Int64)(-10) },
                { "-9", (Int64)(-9) },
                { "-8", (Int64)(-8) },
                { "-7", (Int64)(-7) },
                { "-6", (Int64)(-6) },
                { "-5", (Int64)(-5) },
                { "-4", (Int64)(-4) },
                { "-3", (Int64)(-3) },
                { "-2", (Int64)(-2) },
                { "-1", (Int64)(-1) },
                { "0", (Int64)(0) },
                { "1", (Int64)(1) },
                { "2", (Int64)(2) },
                { "3", (Int64)(3) },
                { "4", (Int64)(4) },
                { "5", (Int64)(5) },
                { "6", (Int64)(6) },
                { "7", (Int64)(7) },
                { "8", (Int64)(8) },
                { "9", (Int64)(9) },
                { "10", (Int64)(10) },
                { "11", (Int64)(11) },
                { "12", (Int64)(12) },
                { "13", (Int64)(13) },
                { "14", (Int64)(14) },
                { "15", (Int64)(15) },
                { "16", (Int64)(16) },
                { "17", (Int64)(17) },
                { "18", (Int64)(18) },
                { "19", (Int64)(19) },
                { "20", (Int64)(20) },
                { "21", (Int64)(21) },
                { "22", (Int64)(22) },
                { "23", (Int64)(23) },
                { "24", (Int64)(24) },
                { "25", (Int64)(25) },
                { "26", (Int64)(26) },
                { "27", (Int64)(27) },
                { "28", (Int64)(28) },
                { "29", (Int64)(29) },
                { "30", (Int64)(30) },
                { "31", (Int64)(31) },
                { "32", (Int64)(32) },
                { "33", (Int64)(33) },
                { "34", (Int64)(34) },
                { "35", (Int64)(35) },
                { "36", (Int64)(36) },
                { "37", (Int64)(37) },
                { "38", (Int64)(38) },
                { "39", (Int64)(39) },
                { "40", (Int64)(40) },
                { "41", (Int64)(41) },
                { "42", (Int64)(42) },
                { "43", (Int64)(43) },
                { "44", (Int64)(44) },
                { "45", (Int64)(45) },
                { "46", (Int64)(46) },
                { "47", (Int64)(47) },
                { "48", (Int64)(48) },
                { "49", (Int64)(49) },
                { "50", (Int64)(50) },
                { "51", (Int64)(51) },
                { "52", (Int64)(52) },
                { "53", (Int64)(53) },
                { "54", (Int64)(54) },
                { "55", (Int64)(55) },
                { "56", (Int64)(56) },
                { "57", (Int64)(57) },
                { "58", (Int64)(58) },
                { "59", (Int64)(59) },
                { "60", (Int64)(60) },
                { "61", (Int64)(61) },
                { "62", (Int64)(62) },
                { "63", (Int64)(63) },
                { "64", (Int64)(64) },
                { "65", (Int64)(65) },
                { "66", (Int64)(66) },
                { "67", (Int64)(67) },
                { "68", (Int64)(68) },
                { "69", (Int64)(69) },
                { "70", (Int64)(70) },
                { "71", (Int64)(71) },
                { "72", (Int64)(72) },
                { "73", (Int64)(73) },
                { "74", (Int64)(74) },
                { "75", (Int64)(75) },
                { "76", (Int64)(76) },
                { "77", (Int64)(77) },
                { "78", (Int64)(78) },
                { "79", (Int64)(79) },
                { "80", (Int64)(80) },
                { "81", (Int64)(81) },
                { "82", (Int64)(82) },
                { "83", (Int64)(83) },
                { "84", (Int64)(84) },
                { "85", (Int64)(85) },
                { "86", (Int64)(86) },
                { "87", (Int64)(87) },
                { "88", (Int64)(88) },
                { "89", (Int64)(89) },
                { "90", (Int64)(90) },
                { "91", (Int64)(91) },
                { "92", (Int64)(92) },
                { "93", (Int64)(93) },
                { "94", (Int64)(94) },
                { "95", (Int64)(95) },
                { "96", (Int64)(96) },
                { "97", (Int64)(97) },
                { "98", (Int64)(98) },
                { "99", (Int64)(99) },
                { "100", (Int64)(100) },
                { "101", (Int64)(101) },
                { "102", (Int64)(102) },
                { "103", (Int64)(103) },
                { "104", (Int64)(104) },
                { "105", (Int64)(105) },
                { "106", (Int64)(106) },
                { "107", (Int64)(107) },
                { "108", (Int64)(108) },
                { "109", (Int64)(109) },
                { "110", (Int64)(110) },
                { "111", (Int64)(111) },
                { "112", (Int64)(112) },
                { "113", (Int64)(113) },
                { "114", (Int64)(114) },
                { "115", (Int64)(115) },
                { "116", (Int64)(116) },
                { "117", (Int64)(117) },
                { "118", (Int64)(118) },
                { "119", (Int64)(119) },
                { "120", (Int64)(120) },
                { "121", (Int64)(121) },
                { "122", (Int64)(122) },
                { "123", (Int64)(123) },
                { "124", (Int64)(124) },
                { "125", (Int64)(125) },
                { "126", (Int64)(126) },
                { "127", (Int64)(127) },
            });
        }

        [TestMethod]
        public void FastDeserializer_NullableInt64()
        {
            AssertDeserialize(new Asserts<Int64?>
            {
                { "null", (Int64?)null },
                { Int64.MinValue.ToString(), (Int64?)Int64.MinValue },
                { Int64.MaxValue.ToString(), (Int64?)Int64.MaxValue },
                { ((Int64)(Int64.MinValue + 1)).ToString(), (Int64?)(Int64.MinValue + 1) },
                { ((Int64)(Int64.MaxValue - 1)).ToString(), (Int64?)(Int64.MaxValue - 1) },
                { "-128", (Int64?)(-128) },
                { "-127", (Int64?)(-127) },
                { "-126", (Int64?)(-126) },
                { "-125", (Int64?)(-125) },
                { "-124", (Int64?)(-124) },
                { "-123", (Int64?)(-123) },
                { "-122", (Int64?)(-122) },
                { "-121", (Int64?)(-121) },
                { "-120", (Int64?)(-120) },
                { "-119", (Int64?)(-119) },
                { "-118", (Int64?)(-118) },
                { "-117", (Int64?)(-117) },
                { "-116", (Int64?)(-116) },
                { "-115", (Int64?)(-115) },
                { "-114", (Int64?)(-114) },
                { "-113", (Int64?)(-113) },
                { "-112", (Int64?)(-112) },
                { "-111", (Int64?)(-111) },
                { "-110", (Int64?)(-110) },
                { "-109", (Int64?)(-109) },
                { "-108", (Int64?)(-108) },
                { "-107", (Int64?)(-107) },
                { "-106", (Int64?)(-106) },
                { "-105", (Int64?)(-105) },
                { "-104", (Int64?)(-104) },
                { "-103", (Int64?)(-103) },
                { "-102", (Int64?)(-102) },
                { "-101", (Int64?)(-101) },
                { "-100", (Int64?)(-100) },
                { "-99", (Int64?)(-99) },
                { "-98", (Int64?)(-98) },
                { "-97", (Int64?)(-97) },
                { "-96", (Int64?)(-96) },
                { "-95", (Int64?)(-95) },
                { "-94", (Int64?)(-94) },
                { "-93", (Int64?)(-93) },
                { "-92", (Int64?)(-92) },
                { "-91", (Int64?)(-91) },
                { "-90", (Int64?)(-90) },
                { "-89", (Int64?)(-89) },
                { "-88", (Int64?)(-88) },
                { "-87", (Int64?)(-87) },
                { "-86", (Int64?)(-86) },
                { "-85", (Int64?)(-85) },
                { "-84", (Int64?)(-84) },
                { "-83", (Int64?)(-83) },
                { "-82", (Int64?)(-82) },
                { "-81", (Int64?)(-81) },
                { "-80", (Int64?)(-80) },
                { "-79", (Int64?)(-79) },
                { "-78", (Int64?)(-78) },
                { "-77", (Int64?)(-77) },
                { "-76", (Int64?)(-76) },
                { "-75", (Int64?)(-75) },
                { "-74", (Int64?)(-74) },
                { "-73", (Int64?)(-73) },
                { "-72", (Int64?)(-72) },
                { "-71", (Int64?)(-71) },
                { "-70", (Int64?)(-70) },
                { "-69", (Int64?)(-69) },
                { "-68", (Int64?)(-68) },
                { "-67", (Int64?)(-67) },
                { "-66", (Int64?)(-66) },
                { "-65", (Int64?)(-65) },
                { "-64", (Int64?)(-64) },
                { "-63", (Int64?)(-63) },
                { "-62", (Int64?)(-62) },
                { "-61", (Int64?)(-61) },
                { "-60", (Int64?)(-60) },
                { "-59", (Int64?)(-59) },
                { "-58", (Int64?)(-58) },
                { "-57", (Int64?)(-57) },
                { "-56", (Int64?)(-56) },
                { "-55", (Int64?)(-55) },
                { "-54", (Int64?)(-54) },
                { "-53", (Int64?)(-53) },
                { "-52", (Int64?)(-52) },
                { "-51", (Int64?)(-51) },
                { "-50", (Int64?)(-50) },
                { "-49", (Int64?)(-49) },
                { "-48", (Int64?)(-48) },
                { "-47", (Int64?)(-47) },
                { "-46", (Int64?)(-46) },
                { "-45", (Int64?)(-45) },
                { "-44", (Int64?)(-44) },
                { "-43", (Int64?)(-43) },
                { "-42", (Int64?)(-42) },
                { "-41", (Int64?)(-41) },
                { "-40", (Int64?)(-40) },
                { "-39", (Int64?)(-39) },
                { "-38", (Int64?)(-38) },
                { "-37", (Int64?)(-37) },
                { "-36", (Int64?)(-36) },
                { "-35", (Int64?)(-35) },
                { "-34", (Int64?)(-34) },
                { "-33", (Int64?)(-33) },
                { "-32", (Int64?)(-32) },
                { "-31", (Int64?)(-31) },
                { "-30", (Int64?)(-30) },
                { "-29", (Int64?)(-29) },
                { "-28", (Int64?)(-28) },
                { "-27", (Int64?)(-27) },
                { "-26", (Int64?)(-26) },
                { "-25", (Int64?)(-25) },
                { "-24", (Int64?)(-24) },
                { "-23", (Int64?)(-23) },
                { "-22", (Int64?)(-22) },
                { "-21", (Int64?)(-21) },
                { "-20", (Int64?)(-20) },
                { "-19", (Int64?)(-19) },
                { "-18", (Int64?)(-18) },
                { "-17", (Int64?)(-17) },
                { "-16", (Int64?)(-16) },
                { "-15", (Int64?)(-15) },
                { "-14", (Int64?)(-14) },
                { "-13", (Int64?)(-13) },
                { "-12", (Int64?)(-12) },
                { "-11", (Int64?)(-11) },
                { "-10", (Int64?)(-10) },
                { "-9", (Int64?)(-9) },
                { "-8", (Int64?)(-8) },
                { "-7", (Int64?)(-7) },
                { "-6", (Int64?)(-6) },
                { "-5", (Int64?)(-5) },
                { "-4", (Int64?)(-4) },
                { "-3", (Int64?)(-3) },
                { "-2", (Int64?)(-2) },
                { "-1", (Int64?)(-1) },
                { "0", (Int64?)(0) },
                { "1", (Int64?)(1) },
                { "2", (Int64?)(2) },
                { "3", (Int64?)(3) },
                { "4", (Int64?)(4) },
                { "5", (Int64?)(5) },
                { "6", (Int64?)(6) },
                { "7", (Int64?)(7) },
                { "8", (Int64?)(8) },
                { "9", (Int64?)(9) },
                { "10", (Int64?)(10) },
                { "11", (Int64?)(11) },
                { "12", (Int64?)(12) },
                { "13", (Int64?)(13) },
                { "14", (Int64?)(14) },
                { "15", (Int64?)(15) },
                { "16", (Int64?)(16) },
                { "17", (Int64?)(17) },
                { "18", (Int64?)(18) },
                { "19", (Int64?)(19) },
                { "20", (Int64?)(20) },
                { "21", (Int64?)(21) },
                { "22", (Int64?)(22) },
                { "23", (Int64?)(23) },
                { "24", (Int64?)(24) },
                { "25", (Int64?)(25) },
                { "26", (Int64?)(26) },
                { "27", (Int64?)(27) },
                { "28", (Int64?)(28) },
                { "29", (Int64?)(29) },
                { "30", (Int64?)(30) },
                { "31", (Int64?)(31) },
                { "32", (Int64?)(32) },
                { "33", (Int64?)(33) },
                { "34", (Int64?)(34) },
                { "35", (Int64?)(35) },
                { "36", (Int64?)(36) },
                { "37", (Int64?)(37) },
                { "38", (Int64?)(38) },
                { "39", (Int64?)(39) },
                { "40", (Int64?)(40) },
                { "41", (Int64?)(41) },
                { "42", (Int64?)(42) },
                { "43", (Int64?)(43) },
                { "44", (Int64?)(44) },
                { "45", (Int64?)(45) },
                { "46", (Int64?)(46) },
                { "47", (Int64?)(47) },
                { "48", (Int64?)(48) },
                { "49", (Int64?)(49) },
                { "50", (Int64?)(50) },
                { "51", (Int64?)(51) },
                { "52", (Int64?)(52) },
                { "53", (Int64?)(53) },
                { "54", (Int64?)(54) },
                { "55", (Int64?)(55) },
                { "56", (Int64?)(56) },
                { "57", (Int64?)(57) },
                { "58", (Int64?)(58) },
                { "59", (Int64?)(59) },
                { "60", (Int64?)(60) },
                { "61", (Int64?)(61) },
                { "62", (Int64?)(62) },
                { "63", (Int64?)(63) },
                { "64", (Int64?)(64) },
                { "65", (Int64?)(65) },
                { "66", (Int64?)(66) },
                { "67", (Int64?)(67) },
                { "68", (Int64?)(68) },
                { "69", (Int64?)(69) },
                { "70", (Int64?)(70) },
                { "71", (Int64?)(71) },
                { "72", (Int64?)(72) },
                { "73", (Int64?)(73) },
                { "74", (Int64?)(74) },
                { "75", (Int64?)(75) },
                { "76", (Int64?)(76) },
                { "77", (Int64?)(77) },
                { "78", (Int64?)(78) },
                { "79", (Int64?)(79) },
                { "80", (Int64?)(80) },
                { "81", (Int64?)(81) },
                { "82", (Int64?)(82) },
                { "83", (Int64?)(83) },
                { "84", (Int64?)(84) },
                { "85", (Int64?)(85) },
                { "86", (Int64?)(86) },
                { "87", (Int64?)(87) },
                { "88", (Int64?)(88) },
                { "89", (Int64?)(89) },
                { "90", (Int64?)(90) },
                { "91", (Int64?)(91) },
                { "92", (Int64?)(92) },
                { "93", (Int64?)(93) },
                { "94", (Int64?)(94) },
                { "95", (Int64?)(95) },
                { "96", (Int64?)(96) },
                { "97", (Int64?)(97) },
                { "98", (Int64?)(98) },
                { "99", (Int64?)(99) },
                { "100", (Int64?)(100) },
                { "101", (Int64?)(101) },
                { "102", (Int64?)(102) },
                { "103", (Int64?)(103) },
                { "104", (Int64?)(104) },
                { "105", (Int64?)(105) },
                { "106", (Int64?)(106) },
                { "107", (Int64?)(107) },
                { "108", (Int64?)(108) },
                { "109", (Int64?)(109) },
                { "110", (Int64?)(110) },
                { "111", (Int64?)(111) },
                { "112", (Int64?)(112) },
                { "113", (Int64?)(113) },
                { "114", (Int64?)(114) },
                { "115", (Int64?)(115) },
                { "116", (Int64?)(116) },
                { "117", (Int64?)(117) },
                { "118", (Int64?)(118) },
                { "119", (Int64?)(119) },
                { "120", (Int64?)(120) },
                { "121", (Int64?)(121) },
                { "122", (Int64?)(122) },
                { "123", (Int64?)(123) },
                { "124", (Int64?)(124) },
                { "125", (Int64?)(125) },
                { "126", (Int64?)(126) },
                { "127", (Int64?)(127) },
            });
        }

        [TestMethod]
        public void FastDeserializer_Byte()
        {
            AssertDeserialize(new Asserts<Byte>
            {
                { Byte.MinValue.ToString(), (Byte)Byte.MinValue },
                { Byte.MaxValue.ToString(), (Byte)Byte.MaxValue },
                { ((Byte)(Byte.MinValue + 1)).ToString(), (Byte)(Byte.MinValue + 1) },
                { ((Byte)(Byte.MaxValue - 1)).ToString(), (Byte)(Byte.MaxValue - 1) },
                { "0", (Byte)0 },
                { "1", (Byte)1 },
                { "2", (Byte)2 },
                { "3", (Byte)3 },
                { "4", (Byte)4 },
                { "5", (Byte)5 },
                { "6", (Byte)6 },
                { "7", (Byte)7 },
                { "8", (Byte)8 },
                { "9", (Byte)9 },
                { "10", (Byte)10 },
                { "11", (Byte)11 },
                { "12", (Byte)12 },
                { "13", (Byte)13 },
                { "14", (Byte)14 },
                { "15", (Byte)15 },
                { "16", (Byte)16 },
                { "17", (Byte)17 },
                { "18", (Byte)18 },
                { "19", (Byte)19 },
                { "20", (Byte)20 },
                { "21", (Byte)21 },
                { "22", (Byte)22 },
                { "23", (Byte)23 },
                { "24", (Byte)24 },
                { "25", (Byte)25 },
                { "26", (Byte)26 },
                { "27", (Byte)27 },
                { "28", (Byte)28 },
                { "29", (Byte)29 },
                { "30", (Byte)30 },
                { "31", (Byte)31 },
                { "32", (Byte)32 },
                { "33", (Byte)33 },
                { "34", (Byte)34 },
                { "35", (Byte)35 },
                { "36", (Byte)36 },
                { "37", (Byte)37 },
                { "38", (Byte)38 },
                { "39", (Byte)39 },
                { "40", (Byte)40 },
                { "41", (Byte)41 },
                { "42", (Byte)42 },
                { "43", (Byte)43 },
                { "44", (Byte)44 },
                { "45", (Byte)45 },
                { "46", (Byte)46 },
                { "47", (Byte)47 },
                { "48", (Byte)48 },
                { "49", (Byte)49 },
                { "50", (Byte)50 },
                { "51", (Byte)51 },
                { "52", (Byte)52 },
                { "53", (Byte)53 },
                { "54", (Byte)54 },
                { "55", (Byte)55 },
                { "56", (Byte)56 },
                { "57", (Byte)57 },
                { "58", (Byte)58 },
                { "59", (Byte)59 },
                { "60", (Byte)60 },
                { "61", (Byte)61 },
                { "62", (Byte)62 },
                { "63", (Byte)63 },
                { "64", (Byte)64 },
                { "65", (Byte)65 },
                { "66", (Byte)66 },
                { "67", (Byte)67 },
                { "68", (Byte)68 },
                { "69", (Byte)69 },
                { "70", (Byte)70 },
                { "71", (Byte)71 },
                { "72", (Byte)72 },
                { "73", (Byte)73 },
                { "74", (Byte)74 },
                { "75", (Byte)75 },
                { "76", (Byte)76 },
                { "77", (Byte)77 },
                { "78", (Byte)78 },
                { "79", (Byte)79 },
                { "80", (Byte)80 },
                { "81", (Byte)81 },
                { "82", (Byte)82 },
                { "83", (Byte)83 },
                { "84", (Byte)84 },
                { "85", (Byte)85 },
                { "86", (Byte)86 },
                { "87", (Byte)87 },
                { "88", (Byte)88 },
                { "89", (Byte)89 },
                { "90", (Byte)90 },
                { "91", (Byte)91 },
                { "92", (Byte)92 },
                { "93", (Byte)93 },
                { "94", (Byte)94 },
                { "95", (Byte)95 },
                { "96", (Byte)96 },
                { "97", (Byte)97 },
                { "98", (Byte)98 },
                { "99", (Byte)99 },
                { "100", (Byte)100 },
                { "101", (Byte)101 },
                { "102", (Byte)102 },
                { "103", (Byte)103 },
                { "104", (Byte)104 },
                { "105", (Byte)105 },
                { "106", (Byte)106 },
                { "107", (Byte)107 },
                { "108", (Byte)108 },
                { "109", (Byte)109 },
                { "110", (Byte)110 },
                { "111", (Byte)111 },
                { "112", (Byte)112 },
                { "113", (Byte)113 },
                { "114", (Byte)114 },
                { "115", (Byte)115 },
                { "116", (Byte)116 },
                { "117", (Byte)117 },
                { "118", (Byte)118 },
                { "119", (Byte)119 },
                { "120", (Byte)120 },
                { "121", (Byte)121 },
                { "122", (Byte)122 },
                { "123", (Byte)123 },
                { "124", (Byte)124 },
                { "125", (Byte)125 },
                { "126", (Byte)126 },
                { "127", (Byte)127 },
                { "128", (Byte)128 },
                { "129", (Byte)129 },
                { "130", (Byte)130 },
                { "131", (Byte)131 },
                { "132", (Byte)132 },
                { "133", (Byte)133 },
                { "134", (Byte)134 },
                { "135", (Byte)135 },
                { "136", (Byte)136 },
                { "137", (Byte)137 },
                { "138", (Byte)138 },
                { "139", (Byte)139 },
                { "140", (Byte)140 },
                { "141", (Byte)141 },
                { "142", (Byte)142 },
                { "143", (Byte)143 },
                { "144", (Byte)144 },
                { "145", (Byte)145 },
                { "146", (Byte)146 },
                { "147", (Byte)147 },
                { "148", (Byte)148 },
                { "149", (Byte)149 },
                { "150", (Byte)150 },
                { "151", (Byte)151 },
                { "152", (Byte)152 },
                { "153", (Byte)153 },
                { "154", (Byte)154 },
                { "155", (Byte)155 },
                { "156", (Byte)156 },
                { "157", (Byte)157 },
                { "158", (Byte)158 },
                { "159", (Byte)159 },
                { "160", (Byte)160 },
                { "161", (Byte)161 },
                { "162", (Byte)162 },
                { "163", (Byte)163 },
                { "164", (Byte)164 },
                { "165", (Byte)165 },
                { "166", (Byte)166 },
                { "167", (Byte)167 },
                { "168", (Byte)168 },
                { "169", (Byte)169 },
                { "170", (Byte)170 },
                { "171", (Byte)171 },
                { "172", (Byte)172 },
                { "173", (Byte)173 },
                { "174", (Byte)174 },
                { "175", (Byte)175 },
                { "176", (Byte)176 },
                { "177", (Byte)177 },
                { "178", (Byte)178 },
                { "179", (Byte)179 },
                { "180", (Byte)180 },
                { "181", (Byte)181 },
                { "182", (Byte)182 },
                { "183", (Byte)183 },
                { "184", (Byte)184 },
                { "185", (Byte)185 },
                { "186", (Byte)186 },
                { "187", (Byte)187 },
                { "188", (Byte)188 },
                { "189", (Byte)189 },
                { "190", (Byte)190 },
                { "191", (Byte)191 },
                { "192", (Byte)192 },
                { "193", (Byte)193 },
                { "194", (Byte)194 },
                { "195", (Byte)195 },
                { "196", (Byte)196 },
                { "197", (Byte)197 },
                { "198", (Byte)198 },
                { "199", (Byte)199 },
                { "200", (Byte)200 },
                { "201", (Byte)201 },
                { "202", (Byte)202 },
                { "203", (Byte)203 },
                { "204", (Byte)204 },
                { "205", (Byte)205 },
                { "206", (Byte)206 },
                { "207", (Byte)207 },
                { "208", (Byte)208 },
                { "209", (Byte)209 },
                { "210", (Byte)210 },
                { "211", (Byte)211 },
                { "212", (Byte)212 },
                { "213", (Byte)213 },
                { "214", (Byte)214 },
                { "215", (Byte)215 },
                { "216", (Byte)216 },
                { "217", (Byte)217 },
                { "218", (Byte)218 },
                { "219", (Byte)219 },
                { "220", (Byte)220 },
                { "221", (Byte)221 },
                { "222", (Byte)222 },
                { "223", (Byte)223 },
                { "224", (Byte)224 },
                { "225", (Byte)225 },
                { "226", (Byte)226 },
                { "227", (Byte)227 },
                { "228", (Byte)228 },
                { "229", (Byte)229 },
                { "230", (Byte)230 },
                { "231", (Byte)231 },
                { "232", (Byte)232 },
                { "233", (Byte)233 },
                { "234", (Byte)234 },
                { "235", (Byte)235 },
                { "236", (Byte)236 },
                { "237", (Byte)237 },
                { "238", (Byte)238 },
                { "239", (Byte)239 },
                { "240", (Byte)240 },
                { "241", (Byte)241 },
                { "242", (Byte)242 },
                { "243", (Byte)243 },
                { "244", (Byte)244 },
                { "245", (Byte)245 },
                { "246", (Byte)246 },
                { "247", (Byte)247 },
                { "248", (Byte)248 },
                { "249", (Byte)249 },
                { "250", (Byte)250 },
                { "251", (Byte)251 },
                { "252", (Byte)252 },
                { "253", (Byte)253 },
                { "254", (Byte)254 },
                { "255", (Byte)255 },
            });
        }

        [TestMethod]
        public void FastDeserializer_NullableByte()
        {
            AssertDeserialize(new Asserts<Byte?>
            {
                { "null", (Byte?)null },
                { Byte.MinValue.ToString(), (Byte?)Byte.MinValue },
                { Byte.MaxValue.ToString(), (Byte?)Byte.MaxValue },
                { ((Byte)(Byte.MinValue + 1)).ToString(), (Byte?)(Byte.MinValue + 1) },
                { ((Byte)(Byte.MaxValue - 1)).ToString(), (Byte?)(Byte.MaxValue - 1) },
                { "0", (Byte?)0 },
                { "1", (Byte?)1 },
                { "2", (Byte?)2 },
                { "3", (Byte?)3 },
                { "4", (Byte?)4 },
                { "5", (Byte?)5 },
                { "6", (Byte?)6 },
                { "7", (Byte?)7 },
                { "8", (Byte?)8 },
                { "9", (Byte?)9 },
                { "10", (Byte?)10 },
                { "11", (Byte?)11 },
                { "12", (Byte?)12 },
                { "13", (Byte?)13 },
                { "14", (Byte?)14 },
                { "15", (Byte?)15 },
                { "16", (Byte?)16 },
                { "17", (Byte?)17 },
                { "18", (Byte?)18 },
                { "19", (Byte?)19 },
                { "20", (Byte?)20 },
                { "21", (Byte?)21 },
                { "22", (Byte?)22 },
                { "23", (Byte?)23 },
                { "24", (Byte?)24 },
                { "25", (Byte?)25 },
                { "26", (Byte?)26 },
                { "27", (Byte?)27 },
                { "28", (Byte?)28 },
                { "29", (Byte?)29 },
                { "30", (Byte?)30 },
                { "31", (Byte?)31 },
                { "32", (Byte?)32 },
                { "33", (Byte?)33 },
                { "34", (Byte?)34 },
                { "35", (Byte?)35 },
                { "36", (Byte?)36 },
                { "37", (Byte?)37 },
                { "38", (Byte?)38 },
                { "39", (Byte?)39 },
                { "40", (Byte?)40 },
                { "41", (Byte?)41 },
                { "42", (Byte?)42 },
                { "43", (Byte?)43 },
                { "44", (Byte?)44 },
                { "45", (Byte?)45 },
                { "46", (Byte?)46 },
                { "47", (Byte?)47 },
                { "48", (Byte?)48 },
                { "49", (Byte?)49 },
                { "50", (Byte?)50 },
                { "51", (Byte?)51 },
                { "52", (Byte?)52 },
                { "53", (Byte?)53 },
                { "54", (Byte?)54 },
                { "55", (Byte?)55 },
                { "56", (Byte?)56 },
                { "57", (Byte?)57 },
                { "58", (Byte?)58 },
                { "59", (Byte?)59 },
                { "60", (Byte?)60 },
                { "61", (Byte?)61 },
                { "62", (Byte?)62 },
                { "63", (Byte?)63 },
                { "64", (Byte?)64 },
                { "65", (Byte?)65 },
                { "66", (Byte?)66 },
                { "67", (Byte?)67 },
                { "68", (Byte?)68 },
                { "69", (Byte?)69 },
                { "70", (Byte?)70 },
                { "71", (Byte?)71 },
                { "72", (Byte?)72 },
                { "73", (Byte?)73 },
                { "74", (Byte?)74 },
                { "75", (Byte?)75 },
                { "76", (Byte?)76 },
                { "77", (Byte?)77 },
                { "78", (Byte?)78 },
                { "79", (Byte?)79 },
                { "80", (Byte?)80 },
                { "81", (Byte?)81 },
                { "82", (Byte?)82 },
                { "83", (Byte?)83 },
                { "84", (Byte?)84 },
                { "85", (Byte?)85 },
                { "86", (Byte?)86 },
                { "87", (Byte?)87 },
                { "88", (Byte?)88 },
                { "89", (Byte?)89 },
                { "90", (Byte?)90 },
                { "91", (Byte?)91 },
                { "92", (Byte?)92 },
                { "93", (Byte?)93 },
                { "94", (Byte?)94 },
                { "95", (Byte?)95 },
                { "96", (Byte?)96 },
                { "97", (Byte?)97 },
                { "98", (Byte?)98 },
                { "99", (Byte?)99 },
                { "100", (Byte?)100 },
                { "101", (Byte?)101 },
                { "102", (Byte?)102 },
                { "103", (Byte?)103 },
                { "104", (Byte?)104 },
                { "105", (Byte?)105 },
                { "106", (Byte?)106 },
                { "107", (Byte?)107 },
                { "108", (Byte?)108 },
                { "109", (Byte?)109 },
                { "110", (Byte?)110 },
                { "111", (Byte?)111 },
                { "112", (Byte?)112 },
                { "113", (Byte?)113 },
                { "114", (Byte?)114 },
                { "115", (Byte?)115 },
                { "116", (Byte?)116 },
                { "117", (Byte?)117 },
                { "118", (Byte?)118 },
                { "119", (Byte?)119 },
                { "120", (Byte?)120 },
                { "121", (Byte?)121 },
                { "122", (Byte?)122 },
                { "123", (Byte?)123 },
                { "124", (Byte?)124 },
                { "125", (Byte?)125 },
                { "126", (Byte?)126 },
                { "127", (Byte?)127 },
                { "128", (Byte?)128 },
                { "129", (Byte?)129 },
                { "130", (Byte?)130 },
                { "131", (Byte?)131 },
                { "132", (Byte?)132 },
                { "133", (Byte?)133 },
                { "134", (Byte?)134 },
                { "135", (Byte?)135 },
                { "136", (Byte?)136 },
                { "137", (Byte?)137 },
                { "138", (Byte?)138 },
                { "139", (Byte?)139 },
                { "140", (Byte?)140 },
                { "141", (Byte?)141 },
                { "142", (Byte?)142 },
                { "143", (Byte?)143 },
                { "144", (Byte?)144 },
                { "145", (Byte?)145 },
                { "146", (Byte?)146 },
                { "147", (Byte?)147 },
                { "148", (Byte?)148 },
                { "149", (Byte?)149 },
                { "150", (Byte?)150 },
                { "151", (Byte?)151 },
                { "152", (Byte?)152 },
                { "153", (Byte?)153 },
                { "154", (Byte?)154 },
                { "155", (Byte?)155 },
                { "156", (Byte?)156 },
                { "157", (Byte?)157 },
                { "158", (Byte?)158 },
                { "159", (Byte?)159 },
                { "160", (Byte?)160 },
                { "161", (Byte?)161 },
                { "162", (Byte?)162 },
                { "163", (Byte?)163 },
                { "164", (Byte?)164 },
                { "165", (Byte?)165 },
                { "166", (Byte?)166 },
                { "167", (Byte?)167 },
                { "168", (Byte?)168 },
                { "169", (Byte?)169 },
                { "170", (Byte?)170 },
                { "171", (Byte?)171 },
                { "172", (Byte?)172 },
                { "173", (Byte?)173 },
                { "174", (Byte?)174 },
                { "175", (Byte?)175 },
                { "176", (Byte?)176 },
                { "177", (Byte?)177 },
                { "178", (Byte?)178 },
                { "179", (Byte?)179 },
                { "180", (Byte?)180 },
                { "181", (Byte?)181 },
                { "182", (Byte?)182 },
                { "183", (Byte?)183 },
                { "184", (Byte?)184 },
                { "185", (Byte?)185 },
                { "186", (Byte?)186 },
                { "187", (Byte?)187 },
                { "188", (Byte?)188 },
                { "189", (Byte?)189 },
                { "190", (Byte?)190 },
                { "191", (Byte?)191 },
                { "192", (Byte?)192 },
                { "193", (Byte?)193 },
                { "194", (Byte?)194 },
                { "195", (Byte?)195 },
                { "196", (Byte?)196 },
                { "197", (Byte?)197 },
                { "198", (Byte?)198 },
                { "199", (Byte?)199 },
                { "200", (Byte?)200 },
                { "201", (Byte?)201 },
                { "202", (Byte?)202 },
                { "203", (Byte?)203 },
                { "204", (Byte?)204 },
                { "205", (Byte?)205 },
                { "206", (Byte?)206 },
                { "207", (Byte?)207 },
                { "208", (Byte?)208 },
                { "209", (Byte?)209 },
                { "210", (Byte?)210 },
                { "211", (Byte?)211 },
                { "212", (Byte?)212 },
                { "213", (Byte?)213 },
                { "214", (Byte?)214 },
                { "215", (Byte?)215 },
                { "216", (Byte?)216 },
                { "217", (Byte?)217 },
                { "218", (Byte?)218 },
                { "219", (Byte?)219 },
                { "220", (Byte?)220 },
                { "221", (Byte?)221 },
                { "222", (Byte?)222 },
                { "223", (Byte?)223 },
                { "224", (Byte?)224 },
                { "225", (Byte?)225 },
                { "226", (Byte?)226 },
                { "227", (Byte?)227 },
                { "228", (Byte?)228 },
                { "229", (Byte?)229 },
                { "230", (Byte?)230 },
                { "231", (Byte?)231 },
                { "232", (Byte?)232 },
                { "233", (Byte?)233 },
                { "234", (Byte?)234 },
                { "235", (Byte?)235 },
                { "236", (Byte?)236 },
                { "237", (Byte?)237 },
                { "238", (Byte?)238 },
                { "239", (Byte?)239 },
                { "240", (Byte?)240 },
                { "241", (Byte?)241 },
                { "242", (Byte?)242 },
                { "243", (Byte?)243 },
                { "244", (Byte?)244 },
                { "245", (Byte?)245 },
                { "246", (Byte?)246 },
                { "247", (Byte?)247 },
                { "248", (Byte?)248 },
                { "249", (Byte?)249 },
                { "250", (Byte?)250 },
                { "251", (Byte?)251 },
                { "252", (Byte?)252 },
                { "253", (Byte?)253 },
                { "254", (Byte?)254 },
                { "255", (Byte?)255 },
            });
        }

        [TestMethod]
        public void FastDeserializer_UInt16()
        {
            AssertDeserialize(new Asserts<UInt16>
            {
                { UInt16.MinValue.ToString(), (UInt16)UInt16.MinValue },
                { UInt16.MaxValue.ToString(), (UInt16)UInt16.MaxValue },
                { ((UInt16)(UInt16.MinValue + 1)).ToString(), (UInt16)(UInt16.MinValue + 1) },
                { ((UInt16)(UInt16.MaxValue - 1)).ToString(), (UInt16)(UInt16.MaxValue - 1) },
                { "0", (UInt16)0 },
                { "1", (UInt16)1 },
                { "2", (UInt16)2 },
                { "3", (UInt16)3 },
                { "4", (UInt16)4 },
                { "5", (UInt16)5 },
                { "6", (UInt16)6 },
                { "7", (UInt16)7 },
                { "8", (UInt16)8 },
                { "9", (UInt16)9 },
                { "10", (UInt16)10 },
                { "11", (UInt16)11 },
                { "12", (UInt16)12 },
                { "13", (UInt16)13 },
                { "14", (UInt16)14 },
                { "15", (UInt16)15 },
                { "16", (UInt16)16 },
                { "17", (UInt16)17 },
                { "18", (UInt16)18 },
                { "19", (UInt16)19 },
                { "20", (UInt16)20 },
                { "21", (UInt16)21 },
                { "22", (UInt16)22 },
                { "23", (UInt16)23 },
                { "24", (UInt16)24 },
                { "25", (UInt16)25 },
                { "26", (UInt16)26 },
                { "27", (UInt16)27 },
                { "28", (UInt16)28 },
                { "29", (UInt16)29 },
                { "30", (UInt16)30 },
                { "31", (UInt16)31 },
                { "32", (UInt16)32 },
                { "33", (UInt16)33 },
                { "34", (UInt16)34 },
                { "35", (UInt16)35 },
                { "36", (UInt16)36 },
                { "37", (UInt16)37 },
                { "38", (UInt16)38 },
                { "39", (UInt16)39 },
                { "40", (UInt16)40 },
                { "41", (UInt16)41 },
                { "42", (UInt16)42 },
                { "43", (UInt16)43 },
                { "44", (UInt16)44 },
                { "45", (UInt16)45 },
                { "46", (UInt16)46 },
                { "47", (UInt16)47 },
                { "48", (UInt16)48 },
                { "49", (UInt16)49 },
                { "50", (UInt16)50 },
                { "51", (UInt16)51 },
                { "52", (UInt16)52 },
                { "53", (UInt16)53 },
                { "54", (UInt16)54 },
                { "55", (UInt16)55 },
                { "56", (UInt16)56 },
                { "57", (UInt16)57 },
                { "58", (UInt16)58 },
                { "59", (UInt16)59 },
                { "60", (UInt16)60 },
                { "61", (UInt16)61 },
                { "62", (UInt16)62 },
                { "63", (UInt16)63 },
                { "64", (UInt16)64 },
                { "65", (UInt16)65 },
                { "66", (UInt16)66 },
                { "67", (UInt16)67 },
                { "68", (UInt16)68 },
                { "69", (UInt16)69 },
                { "70", (UInt16)70 },
                { "71", (UInt16)71 },
                { "72", (UInt16)72 },
                { "73", (UInt16)73 },
                { "74", (UInt16)74 },
                { "75", (UInt16)75 },
                { "76", (UInt16)76 },
                { "77", (UInt16)77 },
                { "78", (UInt16)78 },
                { "79", (UInt16)79 },
                { "80", (UInt16)80 },
                { "81", (UInt16)81 },
                { "82", (UInt16)82 },
                { "83", (UInt16)83 },
                { "84", (UInt16)84 },
                { "85", (UInt16)85 },
                { "86", (UInt16)86 },
                { "87", (UInt16)87 },
                { "88", (UInt16)88 },
                { "89", (UInt16)89 },
                { "90", (UInt16)90 },
                { "91", (UInt16)91 },
                { "92", (UInt16)92 },
                { "93", (UInt16)93 },
                { "94", (UInt16)94 },
                { "95", (UInt16)95 },
                { "96", (UInt16)96 },
                { "97", (UInt16)97 },
                { "98", (UInt16)98 },
                { "99", (UInt16)99 },
                { "100", (UInt16)100 },
                { "101", (UInt16)101 },
                { "102", (UInt16)102 },
                { "103", (UInt16)103 },
                { "104", (UInt16)104 },
                { "105", (UInt16)105 },
                { "106", (UInt16)106 },
                { "107", (UInt16)107 },
                { "108", (UInt16)108 },
                { "109", (UInt16)109 },
                { "110", (UInt16)110 },
                { "111", (UInt16)111 },
                { "112", (UInt16)112 },
                { "113", (UInt16)113 },
                { "114", (UInt16)114 },
                { "115", (UInt16)115 },
                { "116", (UInt16)116 },
                { "117", (UInt16)117 },
                { "118", (UInt16)118 },
                { "119", (UInt16)119 },
                { "120", (UInt16)120 },
                { "121", (UInt16)121 },
                { "122", (UInt16)122 },
                { "123", (UInt16)123 },
                { "124", (UInt16)124 },
                { "125", (UInt16)125 },
                { "126", (UInt16)126 },
                { "127", (UInt16)127 },
                { "128", (UInt16)128 },
                { "129", (UInt16)129 },
                { "130", (UInt16)130 },
                { "131", (UInt16)131 },
                { "132", (UInt16)132 },
                { "133", (UInt16)133 },
                { "134", (UInt16)134 },
                { "135", (UInt16)135 },
                { "136", (UInt16)136 },
                { "137", (UInt16)137 },
                { "138", (UInt16)138 },
                { "139", (UInt16)139 },
                { "140", (UInt16)140 },
                { "141", (UInt16)141 },
                { "142", (UInt16)142 },
                { "143", (UInt16)143 },
                { "144", (UInt16)144 },
                { "145", (UInt16)145 },
                { "146", (UInt16)146 },
                { "147", (UInt16)147 },
                { "148", (UInt16)148 },
                { "149", (UInt16)149 },
                { "150", (UInt16)150 },
                { "151", (UInt16)151 },
                { "152", (UInt16)152 },
                { "153", (UInt16)153 },
                { "154", (UInt16)154 },
                { "155", (UInt16)155 },
                { "156", (UInt16)156 },
                { "157", (UInt16)157 },
                { "158", (UInt16)158 },
                { "159", (UInt16)159 },
                { "160", (UInt16)160 },
                { "161", (UInt16)161 },
                { "162", (UInt16)162 },
                { "163", (UInt16)163 },
                { "164", (UInt16)164 },
                { "165", (UInt16)165 },
                { "166", (UInt16)166 },
                { "167", (UInt16)167 },
                { "168", (UInt16)168 },
                { "169", (UInt16)169 },
                { "170", (UInt16)170 },
                { "171", (UInt16)171 },
                { "172", (UInt16)172 },
                { "173", (UInt16)173 },
                { "174", (UInt16)174 },
                { "175", (UInt16)175 },
                { "176", (UInt16)176 },
                { "177", (UInt16)177 },
                { "178", (UInt16)178 },
                { "179", (UInt16)179 },
                { "180", (UInt16)180 },
                { "181", (UInt16)181 },
                { "182", (UInt16)182 },
                { "183", (UInt16)183 },
                { "184", (UInt16)184 },
                { "185", (UInt16)185 },
                { "186", (UInt16)186 },
                { "187", (UInt16)187 },
                { "188", (UInt16)188 },
                { "189", (UInt16)189 },
                { "190", (UInt16)190 },
                { "191", (UInt16)191 },
                { "192", (UInt16)192 },
                { "193", (UInt16)193 },
                { "194", (UInt16)194 },
                { "195", (UInt16)195 },
                { "196", (UInt16)196 },
                { "197", (UInt16)197 },
                { "198", (UInt16)198 },
                { "199", (UInt16)199 },
                { "200", (UInt16)200 },
                { "201", (UInt16)201 },
                { "202", (UInt16)202 },
                { "203", (UInt16)203 },
                { "204", (UInt16)204 },
                { "205", (UInt16)205 },
                { "206", (UInt16)206 },
                { "207", (UInt16)207 },
                { "208", (UInt16)208 },
                { "209", (UInt16)209 },
                { "210", (UInt16)210 },
                { "211", (UInt16)211 },
                { "212", (UInt16)212 },
                { "213", (UInt16)213 },
                { "214", (UInt16)214 },
                { "215", (UInt16)215 },
                { "216", (UInt16)216 },
                { "217", (UInt16)217 },
                { "218", (UInt16)218 },
                { "219", (UInt16)219 },
                { "220", (UInt16)220 },
                { "221", (UInt16)221 },
                { "222", (UInt16)222 },
                { "223", (UInt16)223 },
                { "224", (UInt16)224 },
                { "225", (UInt16)225 },
                { "226", (UInt16)226 },
                { "227", (UInt16)227 },
                { "228", (UInt16)228 },
                { "229", (UInt16)229 },
                { "230", (UInt16)230 },
                { "231", (UInt16)231 },
                { "232", (UInt16)232 },
                { "233", (UInt16)233 },
                { "234", (UInt16)234 },
                { "235", (UInt16)235 },
                { "236", (UInt16)236 },
                { "237", (UInt16)237 },
                { "238", (UInt16)238 },
                { "239", (UInt16)239 },
                { "240", (UInt16)240 },
                { "241", (UInt16)241 },
                { "242", (UInt16)242 },
                { "243", (UInt16)243 },
                { "244", (UInt16)244 },
                { "245", (UInt16)245 },
                { "246", (UInt16)246 },
                { "247", (UInt16)247 },
                { "248", (UInt16)248 },
                { "249", (UInt16)249 },
                { "250", (UInt16)250 },
                { "251", (UInt16)251 },
                { "252", (UInt16)252 },
                { "253", (UInt16)253 },
                { "254", (UInt16)254 },
                { "255", (UInt16)255 },
            });
        }

        [TestMethod]
        public void FastDeserializer_NullableUInt16()
        {
            AssertDeserialize(new Asserts<UInt16?>
            {
                { "null", (UInt16?)null },
                { UInt16.MinValue.ToString(), (UInt16?)UInt16.MinValue },
                { UInt16.MaxValue.ToString(), (UInt16?)UInt16.MaxValue },
                { ((UInt16)(UInt16.MinValue + 1)).ToString(), (UInt16?)(UInt16.MinValue + 1) },
                { ((UInt16)(UInt16.MaxValue - 1)).ToString(), (UInt16?)(UInt16.MaxValue - 1) },
                { "0", (UInt16?)0 },
                { "1", (UInt16?)1 },
                { "2", (UInt16?)2 },
                { "3", (UInt16?)3 },
                { "4", (UInt16?)4 },
                { "5", (UInt16?)5 },
                { "6", (UInt16?)6 },
                { "7", (UInt16?)7 },
                { "8", (UInt16?)8 },
                { "9", (UInt16?)9 },
                { "10", (UInt16?)10 },
                { "11", (UInt16?)11 },
                { "12", (UInt16?)12 },
                { "13", (UInt16?)13 },
                { "14", (UInt16?)14 },
                { "15", (UInt16?)15 },
                { "16", (UInt16?)16 },
                { "17", (UInt16?)17 },
                { "18", (UInt16?)18 },
                { "19", (UInt16?)19 },
                { "20", (UInt16?)20 },
                { "21", (UInt16?)21 },
                { "22", (UInt16?)22 },
                { "23", (UInt16?)23 },
                { "24", (UInt16?)24 },
                { "25", (UInt16?)25 },
                { "26", (UInt16?)26 },
                { "27", (UInt16?)27 },
                { "28", (UInt16?)28 },
                { "29", (UInt16?)29 },
                { "30", (UInt16?)30 },
                { "31", (UInt16?)31 },
                { "32", (UInt16?)32 },
                { "33", (UInt16?)33 },
                { "34", (UInt16?)34 },
                { "35", (UInt16?)35 },
                { "36", (UInt16?)36 },
                { "37", (UInt16?)37 },
                { "38", (UInt16?)38 },
                { "39", (UInt16?)39 },
                { "40", (UInt16?)40 },
                { "41", (UInt16?)41 },
                { "42", (UInt16?)42 },
                { "43", (UInt16?)43 },
                { "44", (UInt16?)44 },
                { "45", (UInt16?)45 },
                { "46", (UInt16?)46 },
                { "47", (UInt16?)47 },
                { "48", (UInt16?)48 },
                { "49", (UInt16?)49 },
                { "50", (UInt16?)50 },
                { "51", (UInt16?)51 },
                { "52", (UInt16?)52 },
                { "53", (UInt16?)53 },
                { "54", (UInt16?)54 },
                { "55", (UInt16?)55 },
                { "56", (UInt16?)56 },
                { "57", (UInt16?)57 },
                { "58", (UInt16?)58 },
                { "59", (UInt16?)59 },
                { "60", (UInt16?)60 },
                { "61", (UInt16?)61 },
                { "62", (UInt16?)62 },
                { "63", (UInt16?)63 },
                { "64", (UInt16?)64 },
                { "65", (UInt16?)65 },
                { "66", (UInt16?)66 },
                { "67", (UInt16?)67 },
                { "68", (UInt16?)68 },
                { "69", (UInt16?)69 },
                { "70", (UInt16?)70 },
                { "71", (UInt16?)71 },
                { "72", (UInt16?)72 },
                { "73", (UInt16?)73 },
                { "74", (UInt16?)74 },
                { "75", (UInt16?)75 },
                { "76", (UInt16?)76 },
                { "77", (UInt16?)77 },
                { "78", (UInt16?)78 },
                { "79", (UInt16?)79 },
                { "80", (UInt16?)80 },
                { "81", (UInt16?)81 },
                { "82", (UInt16?)82 },
                { "83", (UInt16?)83 },
                { "84", (UInt16?)84 },
                { "85", (UInt16?)85 },
                { "86", (UInt16?)86 },
                { "87", (UInt16?)87 },
                { "88", (UInt16?)88 },
                { "89", (UInt16?)89 },
                { "90", (UInt16?)90 },
                { "91", (UInt16?)91 },
                { "92", (UInt16?)92 },
                { "93", (UInt16?)93 },
                { "94", (UInt16?)94 },
                { "95", (UInt16?)95 },
                { "96", (UInt16?)96 },
                { "97", (UInt16?)97 },
                { "98", (UInt16?)98 },
                { "99", (UInt16?)99 },
                { "100", (UInt16?)100 },
                { "101", (UInt16?)101 },
                { "102", (UInt16?)102 },
                { "103", (UInt16?)103 },
                { "104", (UInt16?)104 },
                { "105", (UInt16?)105 },
                { "106", (UInt16?)106 },
                { "107", (UInt16?)107 },
                { "108", (UInt16?)108 },
                { "109", (UInt16?)109 },
                { "110", (UInt16?)110 },
                { "111", (UInt16?)111 },
                { "112", (UInt16?)112 },
                { "113", (UInt16?)113 },
                { "114", (UInt16?)114 },
                { "115", (UInt16?)115 },
                { "116", (UInt16?)116 },
                { "117", (UInt16?)117 },
                { "118", (UInt16?)118 },
                { "119", (UInt16?)119 },
                { "120", (UInt16?)120 },
                { "121", (UInt16?)121 },
                { "122", (UInt16?)122 },
                { "123", (UInt16?)123 },
                { "124", (UInt16?)124 },
                { "125", (UInt16?)125 },
                { "126", (UInt16?)126 },
                { "127", (UInt16?)127 },
                { "128", (UInt16?)128 },
                { "129", (UInt16?)129 },
                { "130", (UInt16?)130 },
                { "131", (UInt16?)131 },
                { "132", (UInt16?)132 },
                { "133", (UInt16?)133 },
                { "134", (UInt16?)134 },
                { "135", (UInt16?)135 },
                { "136", (UInt16?)136 },
                { "137", (UInt16?)137 },
                { "138", (UInt16?)138 },
                { "139", (UInt16?)139 },
                { "140", (UInt16?)140 },
                { "141", (UInt16?)141 },
                { "142", (UInt16?)142 },
                { "143", (UInt16?)143 },
                { "144", (UInt16?)144 },
                { "145", (UInt16?)145 },
                { "146", (UInt16?)146 },
                { "147", (UInt16?)147 },
                { "148", (UInt16?)148 },
                { "149", (UInt16?)149 },
                { "150", (UInt16?)150 },
                { "151", (UInt16?)151 },
                { "152", (UInt16?)152 },
                { "153", (UInt16?)153 },
                { "154", (UInt16?)154 },
                { "155", (UInt16?)155 },
                { "156", (UInt16?)156 },
                { "157", (UInt16?)157 },
                { "158", (UInt16?)158 },
                { "159", (UInt16?)159 },
                { "160", (UInt16?)160 },
                { "161", (UInt16?)161 },
                { "162", (UInt16?)162 },
                { "163", (UInt16?)163 },
                { "164", (UInt16?)164 },
                { "165", (UInt16?)165 },
                { "166", (UInt16?)166 },
                { "167", (UInt16?)167 },
                { "168", (UInt16?)168 },
                { "169", (UInt16?)169 },
                { "170", (UInt16?)170 },
                { "171", (UInt16?)171 },
                { "172", (UInt16?)172 },
                { "173", (UInt16?)173 },
                { "174", (UInt16?)174 },
                { "175", (UInt16?)175 },
                { "176", (UInt16?)176 },
                { "177", (UInt16?)177 },
                { "178", (UInt16?)178 },
                { "179", (UInt16?)179 },
                { "180", (UInt16?)180 },
                { "181", (UInt16?)181 },
                { "182", (UInt16?)182 },
                { "183", (UInt16?)183 },
                { "184", (UInt16?)184 },
                { "185", (UInt16?)185 },
                { "186", (UInt16?)186 },
                { "187", (UInt16?)187 },
                { "188", (UInt16?)188 },
                { "189", (UInt16?)189 },
                { "190", (UInt16?)190 },
                { "191", (UInt16?)191 },
                { "192", (UInt16?)192 },
                { "193", (UInt16?)193 },
                { "194", (UInt16?)194 },
                { "195", (UInt16?)195 },
                { "196", (UInt16?)196 },
                { "197", (UInt16?)197 },
                { "198", (UInt16?)198 },
                { "199", (UInt16?)199 },
                { "200", (UInt16?)200 },
                { "201", (UInt16?)201 },
                { "202", (UInt16?)202 },
                { "203", (UInt16?)203 },
                { "204", (UInt16?)204 },
                { "205", (UInt16?)205 },
                { "206", (UInt16?)206 },
                { "207", (UInt16?)207 },
                { "208", (UInt16?)208 },
                { "209", (UInt16?)209 },
                { "210", (UInt16?)210 },
                { "211", (UInt16?)211 },
                { "212", (UInt16?)212 },
                { "213", (UInt16?)213 },
                { "214", (UInt16?)214 },
                { "215", (UInt16?)215 },
                { "216", (UInt16?)216 },
                { "217", (UInt16?)217 },
                { "218", (UInt16?)218 },
                { "219", (UInt16?)219 },
                { "220", (UInt16?)220 },
                { "221", (UInt16?)221 },
                { "222", (UInt16?)222 },
                { "223", (UInt16?)223 },
                { "224", (UInt16?)224 },
                { "225", (UInt16?)225 },
                { "226", (UInt16?)226 },
                { "227", (UInt16?)227 },
                { "228", (UInt16?)228 },
                { "229", (UInt16?)229 },
                { "230", (UInt16?)230 },
                { "231", (UInt16?)231 },
                { "232", (UInt16?)232 },
                { "233", (UInt16?)233 },
                { "234", (UInt16?)234 },
                { "235", (UInt16?)235 },
                { "236", (UInt16?)236 },
                { "237", (UInt16?)237 },
                { "238", (UInt16?)238 },
                { "239", (UInt16?)239 },
                { "240", (UInt16?)240 },
                { "241", (UInt16?)241 },
                { "242", (UInt16?)242 },
                { "243", (UInt16?)243 },
                { "244", (UInt16?)244 },
                { "245", (UInt16?)245 },
                { "246", (UInt16?)246 },
                { "247", (UInt16?)247 },
                { "248", (UInt16?)248 },
                { "249", (UInt16?)249 },
                { "250", (UInt16?)250 },
                { "251", (UInt16?)251 },
                { "252", (UInt16?)252 },
                { "253", (UInt16?)253 },
                { "254", (UInt16?)254 },
                { "255", (UInt16?)255 },
            });
        }

        [TestMethod]
        public void FastDeserializer_UInt32()
        {
            AssertDeserialize(new Asserts<UInt32>
            {
                { UInt32.MinValue.ToString(), (UInt32)UInt32.MinValue },
                { UInt32.MaxValue.ToString(), (UInt32)UInt32.MaxValue },
                { ((UInt32)(UInt32.MinValue + 1)).ToString(), (UInt32)(UInt32.MinValue + 1) },
                { ((UInt32)(UInt32.MaxValue - 1)).ToString(), (UInt32)(UInt32.MaxValue - 1) },
                { "0", (UInt32)0 },
                { "1", (UInt32)1 },
                { "2", (UInt32)2 },
                { "3", (UInt32)3 },
                { "4", (UInt32)4 },
                { "5", (UInt32)5 },
                { "6", (UInt32)6 },
                { "7", (UInt32)7 },
                { "8", (UInt32)8 },
                { "9", (UInt32)9 },
                { "10", (UInt32)10 },
                { "11", (UInt32)11 },
                { "12", (UInt32)12 },
                { "13", (UInt32)13 },
                { "14", (UInt32)14 },
                { "15", (UInt32)15 },
                { "16", (UInt32)16 },
                { "17", (UInt32)17 },
                { "18", (UInt32)18 },
                { "19", (UInt32)19 },
                { "20", (UInt32)20 },
                { "21", (UInt32)21 },
                { "22", (UInt32)22 },
                { "23", (UInt32)23 },
                { "24", (UInt32)24 },
                { "25", (UInt32)25 },
                { "26", (UInt32)26 },
                { "27", (UInt32)27 },
                { "28", (UInt32)28 },
                { "29", (UInt32)29 },
                { "30", (UInt32)30 },
                { "31", (UInt32)31 },
                { "32", (UInt32)32 },
                { "33", (UInt32)33 },
                { "34", (UInt32)34 },
                { "35", (UInt32)35 },
                { "36", (UInt32)36 },
                { "37", (UInt32)37 },
                { "38", (UInt32)38 },
                { "39", (UInt32)39 },
                { "40", (UInt32)40 },
                { "41", (UInt32)41 },
                { "42", (UInt32)42 },
                { "43", (UInt32)43 },
                { "44", (UInt32)44 },
                { "45", (UInt32)45 },
                { "46", (UInt32)46 },
                { "47", (UInt32)47 },
                { "48", (UInt32)48 },
                { "49", (UInt32)49 },
                { "50", (UInt32)50 },
                { "51", (UInt32)51 },
                { "52", (UInt32)52 },
                { "53", (UInt32)53 },
                { "54", (UInt32)54 },
                { "55", (UInt32)55 },
                { "56", (UInt32)56 },
                { "57", (UInt32)57 },
                { "58", (UInt32)58 },
                { "59", (UInt32)59 },
                { "60", (UInt32)60 },
                { "61", (UInt32)61 },
                { "62", (UInt32)62 },
                { "63", (UInt32)63 },
                { "64", (UInt32)64 },
                { "65", (UInt32)65 },
                { "66", (UInt32)66 },
                { "67", (UInt32)67 },
                { "68", (UInt32)68 },
                { "69", (UInt32)69 },
                { "70", (UInt32)70 },
                { "71", (UInt32)71 },
                { "72", (UInt32)72 },
                { "73", (UInt32)73 },
                { "74", (UInt32)74 },
                { "75", (UInt32)75 },
                { "76", (UInt32)76 },
                { "77", (UInt32)77 },
                { "78", (UInt32)78 },
                { "79", (UInt32)79 },
                { "80", (UInt32)80 },
                { "81", (UInt32)81 },
                { "82", (UInt32)82 },
                { "83", (UInt32)83 },
                { "84", (UInt32)84 },
                { "85", (UInt32)85 },
                { "86", (UInt32)86 },
                { "87", (UInt32)87 },
                { "88", (UInt32)88 },
                { "89", (UInt32)89 },
                { "90", (UInt32)90 },
                { "91", (UInt32)91 },
                { "92", (UInt32)92 },
                { "93", (UInt32)93 },
                { "94", (UInt32)94 },
                { "95", (UInt32)95 },
                { "96", (UInt32)96 },
                { "97", (UInt32)97 },
                { "98", (UInt32)98 },
                { "99", (UInt32)99 },
                { "100", (UInt32)100 },
                { "101", (UInt32)101 },
                { "102", (UInt32)102 },
                { "103", (UInt32)103 },
                { "104", (UInt32)104 },
                { "105", (UInt32)105 },
                { "106", (UInt32)106 },
                { "107", (UInt32)107 },
                { "108", (UInt32)108 },
                { "109", (UInt32)109 },
                { "110", (UInt32)110 },
                { "111", (UInt32)111 },
                { "112", (UInt32)112 },
                { "113", (UInt32)113 },
                { "114", (UInt32)114 },
                { "115", (UInt32)115 },
                { "116", (UInt32)116 },
                { "117", (UInt32)117 },
                { "118", (UInt32)118 },
                { "119", (UInt32)119 },
                { "120", (UInt32)120 },
                { "121", (UInt32)121 },
                { "122", (UInt32)122 },
                { "123", (UInt32)123 },
                { "124", (UInt32)124 },
                { "125", (UInt32)125 },
                { "126", (UInt32)126 },
                { "127", (UInt32)127 },
                { "128", (UInt32)128 },
                { "129", (UInt32)129 },
                { "130", (UInt32)130 },
                { "131", (UInt32)131 },
                { "132", (UInt32)132 },
                { "133", (UInt32)133 },
                { "134", (UInt32)134 },
                { "135", (UInt32)135 },
                { "136", (UInt32)136 },
                { "137", (UInt32)137 },
                { "138", (UInt32)138 },
                { "139", (UInt32)139 },
                { "140", (UInt32)140 },
                { "141", (UInt32)141 },
                { "142", (UInt32)142 },
                { "143", (UInt32)143 },
                { "144", (UInt32)144 },
                { "145", (UInt32)145 },
                { "146", (UInt32)146 },
                { "147", (UInt32)147 },
                { "148", (UInt32)148 },
                { "149", (UInt32)149 },
                { "150", (UInt32)150 },
                { "151", (UInt32)151 },
                { "152", (UInt32)152 },
                { "153", (UInt32)153 },
                { "154", (UInt32)154 },
                { "155", (UInt32)155 },
                { "156", (UInt32)156 },
                { "157", (UInt32)157 },
                { "158", (UInt32)158 },
                { "159", (UInt32)159 },
                { "160", (UInt32)160 },
                { "161", (UInt32)161 },
                { "162", (UInt32)162 },
                { "163", (UInt32)163 },
                { "164", (UInt32)164 },
                { "165", (UInt32)165 },
                { "166", (UInt32)166 },
                { "167", (UInt32)167 },
                { "168", (UInt32)168 },
                { "169", (UInt32)169 },
                { "170", (UInt32)170 },
                { "171", (UInt32)171 },
                { "172", (UInt32)172 },
                { "173", (UInt32)173 },
                { "174", (UInt32)174 },
                { "175", (UInt32)175 },
                { "176", (UInt32)176 },
                { "177", (UInt32)177 },
                { "178", (UInt32)178 },
                { "179", (UInt32)179 },
                { "180", (UInt32)180 },
                { "181", (UInt32)181 },
                { "182", (UInt32)182 },
                { "183", (UInt32)183 },
                { "184", (UInt32)184 },
                { "185", (UInt32)185 },
                { "186", (UInt32)186 },
                { "187", (UInt32)187 },
                { "188", (UInt32)188 },
                { "189", (UInt32)189 },
                { "190", (UInt32)190 },
                { "191", (UInt32)191 },
                { "192", (UInt32)192 },
                { "193", (UInt32)193 },
                { "194", (UInt32)194 },
                { "195", (UInt32)195 },
                { "196", (UInt32)196 },
                { "197", (UInt32)197 },
                { "198", (UInt32)198 },
                { "199", (UInt32)199 },
                { "200", (UInt32)200 },
                { "201", (UInt32)201 },
                { "202", (UInt32)202 },
                { "203", (UInt32)203 },
                { "204", (UInt32)204 },
                { "205", (UInt32)205 },
                { "206", (UInt32)206 },
                { "207", (UInt32)207 },
                { "208", (UInt32)208 },
                { "209", (UInt32)209 },
                { "210", (UInt32)210 },
                { "211", (UInt32)211 },
                { "212", (UInt32)212 },
                { "213", (UInt32)213 },
                { "214", (UInt32)214 },
                { "215", (UInt32)215 },
                { "216", (UInt32)216 },
                { "217", (UInt32)217 },
                { "218", (UInt32)218 },
                { "219", (UInt32)219 },
                { "220", (UInt32)220 },
                { "221", (UInt32)221 },
                { "222", (UInt32)222 },
                { "223", (UInt32)223 },
                { "224", (UInt32)224 },
                { "225", (UInt32)225 },
                { "226", (UInt32)226 },
                { "227", (UInt32)227 },
                { "228", (UInt32)228 },
                { "229", (UInt32)229 },
                { "230", (UInt32)230 },
                { "231", (UInt32)231 },
                { "232", (UInt32)232 },
                { "233", (UInt32)233 },
                { "234", (UInt32)234 },
                { "235", (UInt32)235 },
                { "236", (UInt32)236 },
                { "237", (UInt32)237 },
                { "238", (UInt32)238 },
                { "239", (UInt32)239 },
                { "240", (UInt32)240 },
                { "241", (UInt32)241 },
                { "242", (UInt32)242 },
                { "243", (UInt32)243 },
                { "244", (UInt32)244 },
                { "245", (UInt32)245 },
                { "246", (UInt32)246 },
                { "247", (UInt32)247 },
                { "248", (UInt32)248 },
                { "249", (UInt32)249 },
                { "250", (UInt32)250 },
                { "251", (UInt32)251 },
                { "252", (UInt32)252 },
                { "253", (UInt32)253 },
                { "254", (UInt32)254 },
                { "255", (UInt32)255 },
            });
        }

        [TestMethod]
        public void FastDeserializer_NullableUInt32()
        {
            AssertDeserialize(new Asserts<UInt32?>
            {
                { "null", (UInt32?)null },
                { UInt32.MinValue.ToString(), (UInt32?)UInt32.MinValue },
                { UInt32.MaxValue.ToString(), (UInt32?)UInt32.MaxValue },
                { ((UInt32)(UInt32.MinValue + 1)).ToString(), (UInt32?)(UInt32.MinValue + 1) },
                { ((UInt32)(UInt32.MaxValue - 1)).ToString(), (UInt32?)(UInt32.MaxValue - 1) },
                { "0", (UInt32?)0 },
                { "1", (UInt32?)1 },
                { "2", (UInt32?)2 },
                { "3", (UInt32?)3 },
                { "4", (UInt32?)4 },
                { "5", (UInt32?)5 },
                { "6", (UInt32?)6 },
                { "7", (UInt32?)7 },
                { "8", (UInt32?)8 },
                { "9", (UInt32?)9 },
                { "10", (UInt32?)10 },
                { "11", (UInt32?)11 },
                { "12", (UInt32?)12 },
                { "13", (UInt32?)13 },
                { "14", (UInt32?)14 },
                { "15", (UInt32?)15 },
                { "16", (UInt32?)16 },
                { "17", (UInt32?)17 },
                { "18", (UInt32?)18 },
                { "19", (UInt32?)19 },
                { "20", (UInt32?)20 },
                { "21", (UInt32?)21 },
                { "22", (UInt32?)22 },
                { "23", (UInt32?)23 },
                { "24", (UInt32?)24 },
                { "25", (UInt32?)25 },
                { "26", (UInt32?)26 },
                { "27", (UInt32?)27 },
                { "28", (UInt32?)28 },
                { "29", (UInt32?)29 },
                { "30", (UInt32?)30 },
                { "31", (UInt32?)31 },
                { "32", (UInt32?)32 },
                { "33", (UInt32?)33 },
                { "34", (UInt32?)34 },
                { "35", (UInt32?)35 },
                { "36", (UInt32?)36 },
                { "37", (UInt32?)37 },
                { "38", (UInt32?)38 },
                { "39", (UInt32?)39 },
                { "40", (UInt32?)40 },
                { "41", (UInt32?)41 },
                { "42", (UInt32?)42 },
                { "43", (UInt32?)43 },
                { "44", (UInt32?)44 },
                { "45", (UInt32?)45 },
                { "46", (UInt32?)46 },
                { "47", (UInt32?)47 },
                { "48", (UInt32?)48 },
                { "49", (UInt32?)49 },
                { "50", (UInt32?)50 },
                { "51", (UInt32?)51 },
                { "52", (UInt32?)52 },
                { "53", (UInt32?)53 },
                { "54", (UInt32?)54 },
                { "55", (UInt32?)55 },
                { "56", (UInt32?)56 },
                { "57", (UInt32?)57 },
                { "58", (UInt32?)58 },
                { "59", (UInt32?)59 },
                { "60", (UInt32?)60 },
                { "61", (UInt32?)61 },
                { "62", (UInt32?)62 },
                { "63", (UInt32?)63 },
                { "64", (UInt32?)64 },
                { "65", (UInt32?)65 },
                { "66", (UInt32?)66 },
                { "67", (UInt32?)67 },
                { "68", (UInt32?)68 },
                { "69", (UInt32?)69 },
                { "70", (UInt32?)70 },
                { "71", (UInt32?)71 },
                { "72", (UInt32?)72 },
                { "73", (UInt32?)73 },
                { "74", (UInt32?)74 },
                { "75", (UInt32?)75 },
                { "76", (UInt32?)76 },
                { "77", (UInt32?)77 },
                { "78", (UInt32?)78 },
                { "79", (UInt32?)79 },
                { "80", (UInt32?)80 },
                { "81", (UInt32?)81 },
                { "82", (UInt32?)82 },
                { "83", (UInt32?)83 },
                { "84", (UInt32?)84 },
                { "85", (UInt32?)85 },
                { "86", (UInt32?)86 },
                { "87", (UInt32?)87 },
                { "88", (UInt32?)88 },
                { "89", (UInt32?)89 },
                { "90", (UInt32?)90 },
                { "91", (UInt32?)91 },
                { "92", (UInt32?)92 },
                { "93", (UInt32?)93 },
                { "94", (UInt32?)94 },
                { "95", (UInt32?)95 },
                { "96", (UInt32?)96 },
                { "97", (UInt32?)97 },
                { "98", (UInt32?)98 },
                { "99", (UInt32?)99 },
                { "100", (UInt32?)100 },
                { "101", (UInt32?)101 },
                { "102", (UInt32?)102 },
                { "103", (UInt32?)103 },
                { "104", (UInt32?)104 },
                { "105", (UInt32?)105 },
                { "106", (UInt32?)106 },
                { "107", (UInt32?)107 },
                { "108", (UInt32?)108 },
                { "109", (UInt32?)109 },
                { "110", (UInt32?)110 },
                { "111", (UInt32?)111 },
                { "112", (UInt32?)112 },
                { "113", (UInt32?)113 },
                { "114", (UInt32?)114 },
                { "115", (UInt32?)115 },
                { "116", (UInt32?)116 },
                { "117", (UInt32?)117 },
                { "118", (UInt32?)118 },
                { "119", (UInt32?)119 },
                { "120", (UInt32?)120 },
                { "121", (UInt32?)121 },
                { "122", (UInt32?)122 },
                { "123", (UInt32?)123 },
                { "124", (UInt32?)124 },
                { "125", (UInt32?)125 },
                { "126", (UInt32?)126 },
                { "127", (UInt32?)127 },
                { "128", (UInt32?)128 },
                { "129", (UInt32?)129 },
                { "130", (UInt32?)130 },
                { "131", (UInt32?)131 },
                { "132", (UInt32?)132 },
                { "133", (UInt32?)133 },
                { "134", (UInt32?)134 },
                { "135", (UInt32?)135 },
                { "136", (UInt32?)136 },
                { "137", (UInt32?)137 },
                { "138", (UInt32?)138 },
                { "139", (UInt32?)139 },
                { "140", (UInt32?)140 },
                { "141", (UInt32?)141 },
                { "142", (UInt32?)142 },
                { "143", (UInt32?)143 },
                { "144", (UInt32?)144 },
                { "145", (UInt32?)145 },
                { "146", (UInt32?)146 },
                { "147", (UInt32?)147 },
                { "148", (UInt32?)148 },
                { "149", (UInt32?)149 },
                { "150", (UInt32?)150 },
                { "151", (UInt32?)151 },
                { "152", (UInt32?)152 },
                { "153", (UInt32?)153 },
                { "154", (UInt32?)154 },
                { "155", (UInt32?)155 },
                { "156", (UInt32?)156 },
                { "157", (UInt32?)157 },
                { "158", (UInt32?)158 },
                { "159", (UInt32?)159 },
                { "160", (UInt32?)160 },
                { "161", (UInt32?)161 },
                { "162", (UInt32?)162 },
                { "163", (UInt32?)163 },
                { "164", (UInt32?)164 },
                { "165", (UInt32?)165 },
                { "166", (UInt32?)166 },
                { "167", (UInt32?)167 },
                { "168", (UInt32?)168 },
                { "169", (UInt32?)169 },
                { "170", (UInt32?)170 },
                { "171", (UInt32?)171 },
                { "172", (UInt32?)172 },
                { "173", (UInt32?)173 },
                { "174", (UInt32?)174 },
                { "175", (UInt32?)175 },
                { "176", (UInt32?)176 },
                { "177", (UInt32?)177 },
                { "178", (UInt32?)178 },
                { "179", (UInt32?)179 },
                { "180", (UInt32?)180 },
                { "181", (UInt32?)181 },
                { "182", (UInt32?)182 },
                { "183", (UInt32?)183 },
                { "184", (UInt32?)184 },
                { "185", (UInt32?)185 },
                { "186", (UInt32?)186 },
                { "187", (UInt32?)187 },
                { "188", (UInt32?)188 },
                { "189", (UInt32?)189 },
                { "190", (UInt32?)190 },
                { "191", (UInt32?)191 },
                { "192", (UInt32?)192 },
                { "193", (UInt32?)193 },
                { "194", (UInt32?)194 },
                { "195", (UInt32?)195 },
                { "196", (UInt32?)196 },
                { "197", (UInt32?)197 },
                { "198", (UInt32?)198 },
                { "199", (UInt32?)199 },
                { "200", (UInt32?)200 },
                { "201", (UInt32?)201 },
                { "202", (UInt32?)202 },
                { "203", (UInt32?)203 },
                { "204", (UInt32?)204 },
                { "205", (UInt32?)205 },
                { "206", (UInt32?)206 },
                { "207", (UInt32?)207 },
                { "208", (UInt32?)208 },
                { "209", (UInt32?)209 },
                { "210", (UInt32?)210 },
                { "211", (UInt32?)211 },
                { "212", (UInt32?)212 },
                { "213", (UInt32?)213 },
                { "214", (UInt32?)214 },
                { "215", (UInt32?)215 },
                { "216", (UInt32?)216 },
                { "217", (UInt32?)217 },
                { "218", (UInt32?)218 },
                { "219", (UInt32?)219 },
                { "220", (UInt32?)220 },
                { "221", (UInt32?)221 },
                { "222", (UInt32?)222 },
                { "223", (UInt32?)223 },
                { "224", (UInt32?)224 },
                { "225", (UInt32?)225 },
                { "226", (UInt32?)226 },
                { "227", (UInt32?)227 },
                { "228", (UInt32?)228 },
                { "229", (UInt32?)229 },
                { "230", (UInt32?)230 },
                { "231", (UInt32?)231 },
                { "232", (UInt32?)232 },
                { "233", (UInt32?)233 },
                { "234", (UInt32?)234 },
                { "235", (UInt32?)235 },
                { "236", (UInt32?)236 },
                { "237", (UInt32?)237 },
                { "238", (UInt32?)238 },
                { "239", (UInt32?)239 },
                { "240", (UInt32?)240 },
                { "241", (UInt32?)241 },
                { "242", (UInt32?)242 },
                { "243", (UInt32?)243 },
                { "244", (UInt32?)244 },
                { "245", (UInt32?)245 },
                { "246", (UInt32?)246 },
                { "247", (UInt32?)247 },
                { "248", (UInt32?)248 },
                { "249", (UInt32?)249 },
                { "250", (UInt32?)250 },
                { "251", (UInt32?)251 },
                { "252", (UInt32?)252 },
                { "253", (UInt32?)253 },
                { "254", (UInt32?)254 },
                { "255", (UInt32?)255 },
            });
        }

        [TestMethod]
        public void FastDeserializer_UInt64()
        {
            AssertDeserialize(new Asserts<UInt64>
            {
                { UInt64.MinValue.ToString(), (UInt64)UInt64.MinValue },
                { UInt64.MaxValue.ToString(), (UInt64)UInt64.MaxValue },
                { ((UInt64)(UInt64.MinValue + 1)).ToString(), (UInt64)(UInt64.MinValue + 1) },
                { ((UInt64)(UInt64.MaxValue - 1)).ToString(), (UInt64)(UInt64.MaxValue - 1) },
                { "0", (UInt64)0 },
                { "1", (UInt64)1 },
                { "2", (UInt64)2 },
                { "3", (UInt64)3 },
                { "4", (UInt64)4 },
                { "5", (UInt64)5 },
                { "6", (UInt64)6 },
                { "7", (UInt64)7 },
                { "8", (UInt64)8 },
                { "9", (UInt64)9 },
                { "10", (UInt64)10 },
                { "11", (UInt64)11 },
                { "12", (UInt64)12 },
                { "13", (UInt64)13 },
                { "14", (UInt64)14 },
                { "15", (UInt64)15 },
                { "16", (UInt64)16 },
                { "17", (UInt64)17 },
                { "18", (UInt64)18 },
                { "19", (UInt64)19 },
                { "20", (UInt64)20 },
                { "21", (UInt64)21 },
                { "22", (UInt64)22 },
                { "23", (UInt64)23 },
                { "24", (UInt64)24 },
                { "25", (UInt64)25 },
                { "26", (UInt64)26 },
                { "27", (UInt64)27 },
                { "28", (UInt64)28 },
                { "29", (UInt64)29 },
                { "30", (UInt64)30 },
                { "31", (UInt64)31 },
                { "32", (UInt64)32 },
                { "33", (UInt64)33 },
                { "34", (UInt64)34 },
                { "35", (UInt64)35 },
                { "36", (UInt64)36 },
                { "37", (UInt64)37 },
                { "38", (UInt64)38 },
                { "39", (UInt64)39 },
                { "40", (UInt64)40 },
                { "41", (UInt64)41 },
                { "42", (UInt64)42 },
                { "43", (UInt64)43 },
                { "44", (UInt64)44 },
                { "45", (UInt64)45 },
                { "46", (UInt64)46 },
                { "47", (UInt64)47 },
                { "48", (UInt64)48 },
                { "49", (UInt64)49 },
                { "50", (UInt64)50 },
                { "51", (UInt64)51 },
                { "52", (UInt64)52 },
                { "53", (UInt64)53 },
                { "54", (UInt64)54 },
                { "55", (UInt64)55 },
                { "56", (UInt64)56 },
                { "57", (UInt64)57 },
                { "58", (UInt64)58 },
                { "59", (UInt64)59 },
                { "60", (UInt64)60 },
                { "61", (UInt64)61 },
                { "62", (UInt64)62 },
                { "63", (UInt64)63 },
                { "64", (UInt64)64 },
                { "65", (UInt64)65 },
                { "66", (UInt64)66 },
                { "67", (UInt64)67 },
                { "68", (UInt64)68 },
                { "69", (UInt64)69 },
                { "70", (UInt64)70 },
                { "71", (UInt64)71 },
                { "72", (UInt64)72 },
                { "73", (UInt64)73 },
                { "74", (UInt64)74 },
                { "75", (UInt64)75 },
                { "76", (UInt64)76 },
                { "77", (UInt64)77 },
                { "78", (UInt64)78 },
                { "79", (UInt64)79 },
                { "80", (UInt64)80 },
                { "81", (UInt64)81 },
                { "82", (UInt64)82 },
                { "83", (UInt64)83 },
                { "84", (UInt64)84 },
                { "85", (UInt64)85 },
                { "86", (UInt64)86 },
                { "87", (UInt64)87 },
                { "88", (UInt64)88 },
                { "89", (UInt64)89 },
                { "90", (UInt64)90 },
                { "91", (UInt64)91 },
                { "92", (UInt64)92 },
                { "93", (UInt64)93 },
                { "94", (UInt64)94 },
                { "95", (UInt64)95 },
                { "96", (UInt64)96 },
                { "97", (UInt64)97 },
                { "98", (UInt64)98 },
                { "99", (UInt64)99 },
                { "100", (UInt64)100 },
                { "101", (UInt64)101 },
                { "102", (UInt64)102 },
                { "103", (UInt64)103 },
                { "104", (UInt64)104 },
                { "105", (UInt64)105 },
                { "106", (UInt64)106 },
                { "107", (UInt64)107 },
                { "108", (UInt64)108 },
                { "109", (UInt64)109 },
                { "110", (UInt64)110 },
                { "111", (UInt64)111 },
                { "112", (UInt64)112 },
                { "113", (UInt64)113 },
                { "114", (UInt64)114 },
                { "115", (UInt64)115 },
                { "116", (UInt64)116 },
                { "117", (UInt64)117 },
                { "118", (UInt64)118 },
                { "119", (UInt64)119 },
                { "120", (UInt64)120 },
                { "121", (UInt64)121 },
                { "122", (UInt64)122 },
                { "123", (UInt64)123 },
                { "124", (UInt64)124 },
                { "125", (UInt64)125 },
                { "126", (UInt64)126 },
                { "127", (UInt64)127 },
                { "128", (UInt64)128 },
                { "129", (UInt64)129 },
                { "130", (UInt64)130 },
                { "131", (UInt64)131 },
                { "132", (UInt64)132 },
                { "133", (UInt64)133 },
                { "134", (UInt64)134 },
                { "135", (UInt64)135 },
                { "136", (UInt64)136 },
                { "137", (UInt64)137 },
                { "138", (UInt64)138 },
                { "139", (UInt64)139 },
                { "140", (UInt64)140 },
                { "141", (UInt64)141 },
                { "142", (UInt64)142 },
                { "143", (UInt64)143 },
                { "144", (UInt64)144 },
                { "145", (UInt64)145 },
                { "146", (UInt64)146 },
                { "147", (UInt64)147 },
                { "148", (UInt64)148 },
                { "149", (UInt64)149 },
                { "150", (UInt64)150 },
                { "151", (UInt64)151 },
                { "152", (UInt64)152 },
                { "153", (UInt64)153 },
                { "154", (UInt64)154 },
                { "155", (UInt64)155 },
                { "156", (UInt64)156 },
                { "157", (UInt64)157 },
                { "158", (UInt64)158 },
                { "159", (UInt64)159 },
                { "160", (UInt64)160 },
                { "161", (UInt64)161 },
                { "162", (UInt64)162 },
                { "163", (UInt64)163 },
                { "164", (UInt64)164 },
                { "165", (UInt64)165 },
                { "166", (UInt64)166 },
                { "167", (UInt64)167 },
                { "168", (UInt64)168 },
                { "169", (UInt64)169 },
                { "170", (UInt64)170 },
                { "171", (UInt64)171 },
                { "172", (UInt64)172 },
                { "173", (UInt64)173 },
                { "174", (UInt64)174 },
                { "175", (UInt64)175 },
                { "176", (UInt64)176 },
                { "177", (UInt64)177 },
                { "178", (UInt64)178 },
                { "179", (UInt64)179 },
                { "180", (UInt64)180 },
                { "181", (UInt64)181 },
                { "182", (UInt64)182 },
                { "183", (UInt64)183 },
                { "184", (UInt64)184 },
                { "185", (UInt64)185 },
                { "186", (UInt64)186 },
                { "187", (UInt64)187 },
                { "188", (UInt64)188 },
                { "189", (UInt64)189 },
                { "190", (UInt64)190 },
                { "191", (UInt64)191 },
                { "192", (UInt64)192 },
                { "193", (UInt64)193 },
                { "194", (UInt64)194 },
                { "195", (UInt64)195 },
                { "196", (UInt64)196 },
                { "197", (UInt64)197 },
                { "198", (UInt64)198 },
                { "199", (UInt64)199 },
                { "200", (UInt64)200 },
                { "201", (UInt64)201 },
                { "202", (UInt64)202 },
                { "203", (UInt64)203 },
                { "204", (UInt64)204 },
                { "205", (UInt64)205 },
                { "206", (UInt64)206 },
                { "207", (UInt64)207 },
                { "208", (UInt64)208 },
                { "209", (UInt64)209 },
                { "210", (UInt64)210 },
                { "211", (UInt64)211 },
                { "212", (UInt64)212 },
                { "213", (UInt64)213 },
                { "214", (UInt64)214 },
                { "215", (UInt64)215 },
                { "216", (UInt64)216 },
                { "217", (UInt64)217 },
                { "218", (UInt64)218 },
                { "219", (UInt64)219 },
                { "220", (UInt64)220 },
                { "221", (UInt64)221 },
                { "222", (UInt64)222 },
                { "223", (UInt64)223 },
                { "224", (UInt64)224 },
                { "225", (UInt64)225 },
                { "226", (UInt64)226 },
                { "227", (UInt64)227 },
                { "228", (UInt64)228 },
                { "229", (UInt64)229 },
                { "230", (UInt64)230 },
                { "231", (UInt64)231 },
                { "232", (UInt64)232 },
                { "233", (UInt64)233 },
                { "234", (UInt64)234 },
                { "235", (UInt64)235 },
                { "236", (UInt64)236 },
                { "237", (UInt64)237 },
                { "238", (UInt64)238 },
                { "239", (UInt64)239 },
                { "240", (UInt64)240 },
                { "241", (UInt64)241 },
                { "242", (UInt64)242 },
                { "243", (UInt64)243 },
                { "244", (UInt64)244 },
                { "245", (UInt64)245 },
                { "246", (UInt64)246 },
                { "247", (UInt64)247 },
                { "248", (UInt64)248 },
                { "249", (UInt64)249 },
                { "250", (UInt64)250 },
                { "251", (UInt64)251 },
                { "252", (UInt64)252 },
                { "253", (UInt64)253 },
                { "254", (UInt64)254 },
                { "255", (UInt64)255 },
            });
        }

        [TestMethod]
        public void FastDeserializer_NullableUInt64()
        {
            AssertDeserialize(new Asserts<UInt64?>
            {
                { "null", (UInt64?)null },
                { UInt64.MinValue.ToString(), (UInt64?)UInt64.MinValue },
                { UInt64.MaxValue.ToString(), (UInt64?)UInt64.MaxValue },
                { ((UInt64)(UInt64.MinValue + 1)).ToString(), (UInt64?)(UInt64.MinValue + 1) },
                { ((UInt64)(UInt64.MaxValue - 1)).ToString(), (UInt64?)(UInt64.MaxValue - 1) },
                { "0", (UInt64?)0 },
                { "1", (UInt64?)1 },
                { "2", (UInt64?)2 },
                { "3", (UInt64?)3 },
                { "4", (UInt64?)4 },
                { "5", (UInt64?)5 },
                { "6", (UInt64?)6 },
                { "7", (UInt64?)7 },
                { "8", (UInt64?)8 },
                { "9", (UInt64?)9 },
                { "10", (UInt64?)10 },
                { "11", (UInt64?)11 },
                { "12", (UInt64?)12 },
                { "13", (UInt64?)13 },
                { "14", (UInt64?)14 },
                { "15", (UInt64?)15 },
                { "16", (UInt64?)16 },
                { "17", (UInt64?)17 },
                { "18", (UInt64?)18 },
                { "19", (UInt64?)19 },
                { "20", (UInt64?)20 },
                { "21", (UInt64?)21 },
                { "22", (UInt64?)22 },
                { "23", (UInt64?)23 },
                { "24", (UInt64?)24 },
                { "25", (UInt64?)25 },
                { "26", (UInt64?)26 },
                { "27", (UInt64?)27 },
                { "28", (UInt64?)28 },
                { "29", (UInt64?)29 },
                { "30", (UInt64?)30 },
                { "31", (UInt64?)31 },
                { "32", (UInt64?)32 },
                { "33", (UInt64?)33 },
                { "34", (UInt64?)34 },
                { "35", (UInt64?)35 },
                { "36", (UInt64?)36 },
                { "37", (UInt64?)37 },
                { "38", (UInt64?)38 },
                { "39", (UInt64?)39 },
                { "40", (UInt64?)40 },
                { "41", (UInt64?)41 },
                { "42", (UInt64?)42 },
                { "43", (UInt64?)43 },
                { "44", (UInt64?)44 },
                { "45", (UInt64?)45 },
                { "46", (UInt64?)46 },
                { "47", (UInt64?)47 },
                { "48", (UInt64?)48 },
                { "49", (UInt64?)49 },
                { "50", (UInt64?)50 },
                { "51", (UInt64?)51 },
                { "52", (UInt64?)52 },
                { "53", (UInt64?)53 },
                { "54", (UInt64?)54 },
                { "55", (UInt64?)55 },
                { "56", (UInt64?)56 },
                { "57", (UInt64?)57 },
                { "58", (UInt64?)58 },
                { "59", (UInt64?)59 },
                { "60", (UInt64?)60 },
                { "61", (UInt64?)61 },
                { "62", (UInt64?)62 },
                { "63", (UInt64?)63 },
                { "64", (UInt64?)64 },
                { "65", (UInt64?)65 },
                { "66", (UInt64?)66 },
                { "67", (UInt64?)67 },
                { "68", (UInt64?)68 },
                { "69", (UInt64?)69 },
                { "70", (UInt64?)70 },
                { "71", (UInt64?)71 },
                { "72", (UInt64?)72 },
                { "73", (UInt64?)73 },
                { "74", (UInt64?)74 },
                { "75", (UInt64?)75 },
                { "76", (UInt64?)76 },
                { "77", (UInt64?)77 },
                { "78", (UInt64?)78 },
                { "79", (UInt64?)79 },
                { "80", (UInt64?)80 },
                { "81", (UInt64?)81 },
                { "82", (UInt64?)82 },
                { "83", (UInt64?)83 },
                { "84", (UInt64?)84 },
                { "85", (UInt64?)85 },
                { "86", (UInt64?)86 },
                { "87", (UInt64?)87 },
                { "88", (UInt64?)88 },
                { "89", (UInt64?)89 },
                { "90", (UInt64?)90 },
                { "91", (UInt64?)91 },
                { "92", (UInt64?)92 },
                { "93", (UInt64?)93 },
                { "94", (UInt64?)94 },
                { "95", (UInt64?)95 },
                { "96", (UInt64?)96 },
                { "97", (UInt64?)97 },
                { "98", (UInt64?)98 },
                { "99", (UInt64?)99 },
                { "100", (UInt64?)100 },
                { "101", (UInt64?)101 },
                { "102", (UInt64?)102 },
                { "103", (UInt64?)103 },
                { "104", (UInt64?)104 },
                { "105", (UInt64?)105 },
                { "106", (UInt64?)106 },
                { "107", (UInt64?)107 },
                { "108", (UInt64?)108 },
                { "109", (UInt64?)109 },
                { "110", (UInt64?)110 },
                { "111", (UInt64?)111 },
                { "112", (UInt64?)112 },
                { "113", (UInt64?)113 },
                { "114", (UInt64?)114 },
                { "115", (UInt64?)115 },
                { "116", (UInt64?)116 },
                { "117", (UInt64?)117 },
                { "118", (UInt64?)118 },
                { "119", (UInt64?)119 },
                { "120", (UInt64?)120 },
                { "121", (UInt64?)121 },
                { "122", (UInt64?)122 },
                { "123", (UInt64?)123 },
                { "124", (UInt64?)124 },
                { "125", (UInt64?)125 },
                { "126", (UInt64?)126 },
                { "127", (UInt64?)127 },
                { "128", (UInt64?)128 },
                { "129", (UInt64?)129 },
                { "130", (UInt64?)130 },
                { "131", (UInt64?)131 },
                { "132", (UInt64?)132 },
                { "133", (UInt64?)133 },
                { "134", (UInt64?)134 },
                { "135", (UInt64?)135 },
                { "136", (UInt64?)136 },
                { "137", (UInt64?)137 },
                { "138", (UInt64?)138 },
                { "139", (UInt64?)139 },
                { "140", (UInt64?)140 },
                { "141", (UInt64?)141 },
                { "142", (UInt64?)142 },
                { "143", (UInt64?)143 },
                { "144", (UInt64?)144 },
                { "145", (UInt64?)145 },
                { "146", (UInt64?)146 },
                { "147", (UInt64?)147 },
                { "148", (UInt64?)148 },
                { "149", (UInt64?)149 },
                { "150", (UInt64?)150 },
                { "151", (UInt64?)151 },
                { "152", (UInt64?)152 },
                { "153", (UInt64?)153 },
                { "154", (UInt64?)154 },
                { "155", (UInt64?)155 },
                { "156", (UInt64?)156 },
                { "157", (UInt64?)157 },
                { "158", (UInt64?)158 },
                { "159", (UInt64?)159 },
                { "160", (UInt64?)160 },
                { "161", (UInt64?)161 },
                { "162", (UInt64?)162 },
                { "163", (UInt64?)163 },
                { "164", (UInt64?)164 },
                { "165", (UInt64?)165 },
                { "166", (UInt64?)166 },
                { "167", (UInt64?)167 },
                { "168", (UInt64?)168 },
                { "169", (UInt64?)169 },
                { "170", (UInt64?)170 },
                { "171", (UInt64?)171 },
                { "172", (UInt64?)172 },
                { "173", (UInt64?)173 },
                { "174", (UInt64?)174 },
                { "175", (UInt64?)175 },
                { "176", (UInt64?)176 },
                { "177", (UInt64?)177 },
                { "178", (UInt64?)178 },
                { "179", (UInt64?)179 },
                { "180", (UInt64?)180 },
                { "181", (UInt64?)181 },
                { "182", (UInt64?)182 },
                { "183", (UInt64?)183 },
                { "184", (UInt64?)184 },
                { "185", (UInt64?)185 },
                { "186", (UInt64?)186 },
                { "187", (UInt64?)187 },
                { "188", (UInt64?)188 },
                { "189", (UInt64?)189 },
                { "190", (UInt64?)190 },
                { "191", (UInt64?)191 },
                { "192", (UInt64?)192 },
                { "193", (UInt64?)193 },
                { "194", (UInt64?)194 },
                { "195", (UInt64?)195 },
                { "196", (UInt64?)196 },
                { "197", (UInt64?)197 },
                { "198", (UInt64?)198 },
                { "199", (UInt64?)199 },
                { "200", (UInt64?)200 },
                { "201", (UInt64?)201 },
                { "202", (UInt64?)202 },
                { "203", (UInt64?)203 },
                { "204", (UInt64?)204 },
                { "205", (UInt64?)205 },
                { "206", (UInt64?)206 },
                { "207", (UInt64?)207 },
                { "208", (UInt64?)208 },
                { "209", (UInt64?)209 },
                { "210", (UInt64?)210 },
                { "211", (UInt64?)211 },
                { "212", (UInt64?)212 },
                { "213", (UInt64?)213 },
                { "214", (UInt64?)214 },
                { "215", (UInt64?)215 },
                { "216", (UInt64?)216 },
                { "217", (UInt64?)217 },
                { "218", (UInt64?)218 },
                { "219", (UInt64?)219 },
                { "220", (UInt64?)220 },
                { "221", (UInt64?)221 },
                { "222", (UInt64?)222 },
                { "223", (UInt64?)223 },
                { "224", (UInt64?)224 },
                { "225", (UInt64?)225 },
                { "226", (UInt64?)226 },
                { "227", (UInt64?)227 },
                { "228", (UInt64?)228 },
                { "229", (UInt64?)229 },
                { "230", (UInt64?)230 },
                { "231", (UInt64?)231 },
                { "232", (UInt64?)232 },
                { "233", (UInt64?)233 },
                { "234", (UInt64?)234 },
                { "235", (UInt64?)235 },
                { "236", (UInt64?)236 },
                { "237", (UInt64?)237 },
                { "238", (UInt64?)238 },
                { "239", (UInt64?)239 },
                { "240", (UInt64?)240 },
                { "241", (UInt64?)241 },
                { "242", (UInt64?)242 },
                { "243", (UInt64?)243 },
                { "244", (UInt64?)244 },
                { "245", (UInt64?)245 },
                { "246", (UInt64?)246 },
                { "247", (UInt64?)247 },
                { "248", (UInt64?)248 },
                { "249", (UInt64?)249 },
                { "250", (UInt64?)250 },
                { "251", (UInt64?)251 },
                { "252", (UInt64?)252 },
                { "253", (UInt64?)253 },
                { "254", (UInt64?)254 },
                { "255", (UInt64?)255 },
            });
        }

    }
}
